2010-05-25 12 views
8

के माध्यम से एक पायथन 2.6 एप्लिकेशन को अंतर्राष्ट्रीयकरण करना हम पाइथन 2.6 के साथ उपयोग के लिए विंडोज के तहत बेबेल 0.9.5 [1] का मूल्यांकन कर रहे हैं और निम्नलिखित प्रश्न हैं जिन्हें हम दस्तावेज़ीकरण या googling पढ़ने के माध्यम से जवाब देने में असमर्थ हैं।बेबेल

1) मैं ungettext के लिए एक _ की तरह संक्षिप्त नाम का उपयोग करना चाहते हैं। क्या इस पर कोई सम्मेलन है कि इसके लिए एन_ या एन_ का उपयोग करना चाहिए?

n_ काम करने के लिए प्रकट नहीं होता। बेबेल पाठ निकाला नहीं है।

एन_ आंशिक रूप से काम करता प्रतीत होता है। बेबेल टेक्स्टटेक्स्ट के लिए टेक्स्ट को निष्कर्ष निकालता है, लेकिन ngettext के लिए प्रारूपित नहीं होता है (गुम बहुवचन तर्क और msgstr [n]।)

2) क्या पीओटी फ़ाइल बनाते समय प्रारंभिक msgstr फ़ील्ड को निम्न जैसे सेट करने का कोई तरीका है ?

मुझे संदेह है कि बैबेल सीएफजी फाइलों के माध्यम से ऐसा करने का कोई तरीका हो सकता है, लेकिन मैं बैबेल सीएफजी फ़ाइल प्रारूप पर दस्तावेज़ ढूंढने में असमर्थ हूं।

"परियोजना-ईद-संस्करण: प्रोजेक्ट संस्करण \ n" "भाषा-टीम: en_US \ n"

3) वहाँ संरक्षित करने के लिए 'अप्रचलित' हमारे पीओ फाइलों में क/अछि का कोई तरीका है? जब मैं बैबेल अपडेट कमांड का उपयोग करता हूं, तो नव निर्मित अप्रचलित तारों को # ~ उपसर्गों के साथ चिह्नित किया जाता है, लेकिन मौजूदा अप्रचलित संदेश स्ट्रिंग हटा दी जाती हैं।

धन्यवाद, मैल्कम

[1] http://babel.edgewall.org/

+0

तुम क्यों गए संदेशों निकालने के लिए Win32 के लिए सिर्फ GNU gettext पोर्टेड उपयोगिताओं का उपयोग नहीं करना चाहते हैं? http://gnuwin32.sf.net – bialix

+1

हाय बाईलीज़: जीएनयू गेटटेक्स्ट यूटिलिटीज स्थापित करना हमारे ग्राहकों के लिए सुविधाजनक नहीं है जो अपनी पीओ फाइलें बनाए रखते हैं। बेबेल उपयोगिताओं का एक अन्य लाभ यह है कि वे डिफ़ॉल्ट रूप से यूटीएफ -8 मोड में काम करते हैं। हमें लगातार ऐसा करने के लिए जीएनयू गेटटेक्स्ट यूटिलिटीज प्राप्त करने में कुछ समस्याएं आई हैं (वे ASCIII के लिए डिफ़ॉल्ट हैं)। – Malcolm

उत्तर

8

डिफ़ॉल्ट pybabel extract तक पहचानता निम्नलिखित कीवर्ड: _, gettext, ngettext, ugettext, ungettext, dgettext, dngettext, N_। दूसरों को जोड़ने के लिए -k option का उपयोग करें। N_ अक्सर NULL-translations (जिसे स्थगित अनुवाद भी कहा जाता है) के लिए उपयोग किया जाता है।

अद्यतन: -k विकल्प कैटलॉग में फ़ंक्शन के तर्कों को सूचीबद्ध कर सकता है। इसलिए, यदि आप n_ = ngettext का उपयोग करते हैं तो pybabel extract -k n_:1,2 ... आज़माएं।

+0

हाय डेनिस: आपकी मदद के लिए धन्यवाद।मुझे -k विकल्प के बारे में पता है, लेकिन ngettext फ़ंक्शन में N_ या n_ को मैप करने का कोई तरीका नहीं मिल रहा है ताकि इन फ़ंक्शन के पैरामीटर को बहुवचन के रूप में संसाधित किया जा सके (create_plural, msgstr [0], आदि) बनाम उपनाम गेटटेक्स्ट का मैं एन_एल के उपयोग के संदर्भ में एनयूएल अनुवाद के संदर्भ की सराहना करता हूं। यह एक पाइथन विशिष्ट वाक्यविन्यास (?) जैसा लगता है कि अन्य भाषा गेटटेक्स्ट कार्यान्वयन के विपरीत जो N_ या n_ को ngettext उपनाम के रूप में समर्थन देता है। – Malcolm

+0

हाय डेनिस: आपका "-के एन_: 1,2" तकनीक पूरी तरह से काम करती है - बहुत बहुत धन्यवाद !! अभिलेखागार के लिए: हमने ngettext संक्षिप्त नाम के लिए defacto उद्योग मानक को पसंद करने के लिए एन_ बनाम n_ का उपयोग करने का निर्णय लिया है। – Malcolm

1

प्रश्न 2 उत्तर देने के लिए):

आप pybabel extract के माध्यम से कोलाहल चलाते हैं, तो आप --project और --version विकल्पों के माध्यम से Project-Id-Version सेट कर सकते हैं।

यदि आप setup.py extract_messages के माध्यम से बेबेल चलाते हैं, तो Project-Id-Version वितरण (setup.py फ़ाइल में प्रोजेक्ट नाम और संस्करण) से लिया जाता है।

पीओटी मेटाडेटा सेट करने के लिए दोनों तरीके --msgid-bugs-address और --copyright-holder विकल्पों का भी समर्थन करते हैं।

संबंधित मुद्दे