मेरे पास PyQt4 में लिखा गया कुछ एप्लिकेशन है जहां मैंने अंतर्राष्ट्रीयकरण और जीयूआई के स्थानीयकरण के लिए मानक पायथन गेटटेक्स्ट लाइब्रेरी का उपयोग किया है। यह मेरे लिए अच्छा काम करता है। लेकिन मैंने गेटटेक्स्ट को सिर्फ इसलिए चुना है क्योंकि मुझे पहले से ही गेटटेक्स्ट उपयोग का ज्ञान और अनुभव है, और Qt4 tr() दृष्टिकोण के साथ अनुभव का शून्य है।PyQt4 एप्लिकेशन के स्थानीयकरण के लिए QObject.tr() के बजाय गेटटेक्स्ट का उपयोग करने के पेशेवर और विपक्ष?
अब मैं दोनों दृष्टिकोणों की तुलना करना बेहतर समझना चाहता हूं और समझता हूं कि QObject.tr के बजाय गेटटेक्स्ट का उपयोग करके मैं क्या खो रहा हूं, और क्या कोई गंभीर कारण है कि मुझे Qt4/PyQt4 अनुप्रयोगों के लिए gettext का उपयोग क्यों नहीं करना चाहिए?
gettext का उपयोग कर की मेरी समझ फायदे में हैं:
- GNU gettext परिपक्व है और यह मानक जिस वास्तविक जीएनयू/लिनक्स दुनिया में हो रहा है।
- अनुवादकों के काम को सरल बनाने के लिए पीओ फाइलों के लिए पर्याप्त विशेष संपादक हैं, हालांकि पीओ टेम्पलेट्स की पाठ्य प्रकृति सख्ती से जरूरी नहीं है।
- यहां तक कि वेब सेवाएं भी उपलब्ध हैं जिनका उपयोग सहयोगी अनुवादों के लिए किया जा सकता है।
- गेटटेक्स्ट मानक पायथन लाइब्रेरी है, इसलिए मुझे रनटाइम में इसका उपयोग करने के लिए कुछ खास इंस्टॉल करने की आवश्यकता नहीं है।
- यह ngettext() के माध्यम से एकवचन/बहुवचन रूप चयन के लिए बहुत अच्छा समर्थन है।
क्या मैं QObject.tr() के फायदे के रूप में देखें:
- यह देशी प्रौद्योगिकी के लिए क्यूटी 4/PyQt4 तो शायद यह तेजी से बेहतर है (हालांकि मैं साबित करने के लिए कोई डेटा नहीं है) काम करेंगे/है।
- अनुवाद करने के लिए संदेश में अतिरिक्त संदर्भ जानकारी हो सकती है जो अनुवादकों को homonym शब्दों के लिए सर्वोत्तम रूपों का चयन करने में मदद करेगी, उदा। वास्तविक शब्द के आधार पर अंग्रेजी शब्द "पत्र" का अनुवाद "कैरेक्टर", "मेल" या यहां तक कि "पेपर आकार" के रूप में भी किया जा सकता है।
क्या मैं() QObject.tr का नुकसान gettext बनाम के रूप में देखें:
- मैं क्यूटी प्रलेखन कैसे वहाँ एकवचन/बहुवचन चयन समर्थित है में नहीं मिला था।
- क्यूटी 4 टीएस अनुवाद टेम्पलेट एक्सएमएल प्रारूप में है और इसलिए विशेष संपादक (क्यूटी भाषाविद्) के बिना संपादित करने के लिए अधिक जटिल है और ऐसा लगता है कि कोई अन्य तृतीय-पक्ष समाधान या वेब सेवाएं नहीं हैं। तो अनुवादकों के लिए नए उपकरण सीखने की आवश्यकता होगी (यदि वे पहले से ही पीओ टूल्स से परिचित हैं)।
लेकिन ऊपर दिए गए सभी आइटम स्पष्ट रूप से यह कहने के लिए पर्याप्त नहीं हैं कि कोई भी उपकरण दूसरे से बेहतर है। और मैं बेहतर क्या है इसके बारे में लौ युद्ध शुरू नहीं करना चाहता क्योंकि यह बहुत ही व्यक्तिपरक है। मैं सिर्फ यह जानना चाहता हूं कि मैं QObject.tr() बनाम गेटटेक्स्ट के पेशेवरों और विपक्ष के रूप में क्या खो रहा हूं।
मैं जोड़ना होगा QT_TRANSLATE_NOOP का इस्तेमाल कर रही रहे हैं 'कि टीआर (" आप का चयन किया है% n आइटम (रों) ",, item.count()) ऐसा लगता है कि यह काम कर सकता है लेकिन यह क्यूटी के सिस्टम में बहुत खराब दस्तावेज है और वास्तव में यह नहीं बताता है कि चीजों को कैसे रखा जाए यदि आप वास्तव में एक प्रत्यय के बजाय दो (या अधिक) अलग तार चाहते हैं: 'tr (" % n आइटम {is | s} अब चयन में हैं। ",, item.count())' – SlySven