कोड में बहुत सारे पाठ को प्रबंधित करने का सबसे अच्छा तरीका क्या है (और अनुवादों का भी समर्थन करता है)?

मैं एक ऐसे अनुप्रयोग का विकास कर रहा हूं जिसमें बहुत सारे टेक्स्ट और विभिन्न मॉड्यूल भी शामिल हैं जिन्हें प्रत्येक बिल्ड में शामिल किया जा सकता है या नहीं।

प्रत्येक सहेजी गई परियोजना के लिए हम सभी विवरणों के साथ स्वचालित रूप से एक रिपोर्ट उत्पन्न करते हैं (यानी उस प्रोजेक्ट में उपयोग किए गए एल्गोरिदम का विवरण और इसी तरह)। वर्तमान में हम स्रोत कोड में स्ट्रिंग के रूप में सभी टेक्स्ट एम्बेड करते हैं और हम पीओ और एमओ फाइलों के माध्यम से विभिन्न भाषाओं का भी समर्थन करते हैं।

सिस्टम के अच्छे बिंदु यह है कि गतिशील रूप से दस्तावेज उत्पन्न करना और फाइलों की रिपोर्ट करना बहुत आसान है। बुरी बात यह है कि स्रोत कोड में बहुत से पाठ होने के कारण बदसूरत है और स्वरूपण (यानी एचटीएमएल के साथ) आरामदायक नहीं है, पाठ का संपादन करना मुश्किल है, अनुवाद करने के लिए कोई आसान वर्तनी जांच और भयानक नहीं है।

तो, अंतिम सवाल यह है कि: क्या आप अलग-अलग भाषाओं के लिए कोड में दस्तावेज एम्बेड करना चाहते हैं या बाहरी दस्तावेज फ़ाइलों (उदाहरण के लिए एचटीएमएल) लिख सकते हैं और उन्हें रनटाइम पर पार्स कर सकते हैं? स्पष्ट रूप से सॉफ़्टवेयर का मूल पाठ, ऐसे संदेश संदेश बॉक्स कोड में रहेंगे।

यदि यह मायने रखता है, तो मैं wx+ में wxwidgets के साथ काम कर रहा हूं।

0
यदि सुरक्षा महत्वपूर्ण है, तो हो सकता है कि आप अपने कोड में बहुत अधिक टेक्स्ट शामिल न करें; कोई भी अच्छा डिस्सेबलर/डीबगर लोगों को स्मृति में उन्हें ट्रैक करने की अनुमति देगा, जो संभावित रूप से लोगों को यह बताएगा कि प्रोग्राम कैसे काम करता है।
जोड़ा लेखक JXG, स्रोत

4 उत्तर

यदि मेरे पास प्रदर्शित करने के लिए बहुत सारे टेक्स्ट हैं, तो मैं आमतौर पर इसे एप्लिकेशन के बाहर एक्सएमएल में संग्रहीत करता हूं और इसे आवश्यकतानुसार पढ़ता हूं। यह प्रलेखन के लिए भी अच्छा काम करेगा, साथ ही, मुझे लगता है। आप से दस्तावेज तैयार करने के लिए बस एक अलग स्टाइलशीट हो सकता है। आपके आवेदन को स्थानांतरित करना वैकल्पिक रूप से वैकल्पिक अनुवादों को अलग-अलग बनाए रखने का मामला बन जाएगा - आंतरिक रूप से xml फ़ाइल में अलग-अलग नोड्स के रूप में या प्रत्येक भाषा के लिए अलग-अलग xml फ़ाइलों को बनाए रखकर संगठनात्मक रूप से किया जा सकता है।

हालांकि इस दृष्टिकोण से आपके कार्यक्रम को शुरू करने में अधिक समय लगेगा, मुझे लगता है कि ग्राहक अंततः जीतता है क्योंकि:

  1. आपका प्रोग्राम टेक्स्ट क्लीनर (और बनाए रखने में आसान है)
  2. आपको टेक्स्ट बदलने के लिए कोड को संशोधित करने के लिए मजबूर नहीं किया गया है
  3. आप अपने उत्पाद को अधिक लोगों के लिए उपलब्ध कराने, आसानी से कई और अनुवादों का समर्थन कर सकते हैं।
0
जोड़ा

अन्य उत्तरों महत्वपूर्ण बिंदुओं पर हिट करते हैं इसलिए मैं इसे इंगित करूंगा:

यदि आप एक से एक जोड़े को सरल कर रहे हैं, जैसे:

#textId  "the actual text"

फिर एक्सएमएल ओवरकिल है। यह पार्स के लिए धीमा हो जाएगा, और डिस्क पर बड़ा होगा। सीएसवी या यहां तक ​​कि एक बहुत ही सरल कस्टम प्रारूप की तरह कुछ शायद सबसे अच्छा होगा।

0
जोड़ा

मैं बस एक साधारण टैब सीमांकित पाठ फ़ाइल का उपयोग करता हूं। इसे एक्सेल में लोड किया जा सकता है और बहुत आसानी से संपादित किया जा सकता है। यह आईएसओ -885 9 -1, यूटीएफ -8 या यूटीएफ -16 आदि जैसे किसी भी प्रारूप में भी हो सकता है। पहला कॉलम आईडी के लिए है और फिर प्रत्येक अनुवर्ती कॉलम एक भाषा के लिए है।

मैं फिर एक प्री-प्रोसेसर के माध्यम से टेक्स्ट फ़ाइल चलाता हूं जो टेक्स्ट.h फ़ाइल में enums की एक सूची उत्पन्न करता है और आप टेक्स्ट, या एक सीपीपी फ़ाइल के लिए बाइनरी फ़ाइल जेनरेट कर सकते हैं और इसे बाइनरी में शामिल कर सकते हैं। आप अपने कार्यक्रम में जो चाहिए उसे मेल करने के लिए इस बिंदु पर एन्कोडिंग भी बदल सकते हैं।

लाभ हैं:

यदि कोई स्ट्रिंग गुम है तो आपको संकलन त्रुटि मिलती है।

जब आप एक नई स्ट्रिंग जोड़ते हैं तो आपको इसे सभी भाषाओं के लिए जोड़ने के बारे में चिंता करने की ज़रूरत नहीं है।

डाउनसाइड्स हैं:

आपको अपनी टेक्स्ट फ़ाइल संपादित करने के बाद पुनः संयोजित करना होगा।

कई उपयोगकर्ताओं द्वारा किए गए परिवर्तनों को मर्ज करना अधिक कठिन होता है क्योंकि अधिकांश डिफ टूल केवल लाइन के आधार पर लाइन पर काम करते हैं।

0
जोड़ा

मुझे लगता है कि कोड के विभिन्न संस्करणों के बीच बदल सकते हैं कि सभी पाठ अलग संपत्ति फ़ाइलों में रखा जाना चाहिए। आप एक तंत्र बना सकते हैं जो एक संपत्ति फ़ाइल से उचित स्ट्रिंग में संदेश आईडी को मैप करता है, मानचित्र आईडी 15 को "खोज" या "बसका" क्रमशः अंग्रेजी और स्पेनिश संपत्ति फ़ाइलों में कहें। तो एक संपत्ति फ़ाइल आईडी-संदेश जोड़े के साथ एक एक्सएमएल या सीएसवी हो सकती है। अपने प्रोग्राम को चलाने पर, आप इसे प्रॉपर्टी फ़ाइल (एस) के साथ पैरामीटर के रूप में आपूर्ति करते हैं। जब यह शुरू होता है, तो यह पहले संपत्ति स्ट्रिंग को मानचित्र में लोड करता है, और फिर आप इसका उपयोग करेंगे संपत्ति [15] स्ट्रिंग "खोज" के बजाय। बेशक, आप संख्यात्मक आईडी के बजाय एक पाठ लेबल का उपयोग कर सकते हैं। मैं सीएसएस का उपयोग कर, संपत्ति फ़ाइलों से स्वचालित रूप से प्रलेखन उत्पन्न करने पर विचार करता हूं। इससे संदेशों को संपादित और अनुवाद करना बहुत आसान हो जाता है।

0
जोड़ा