2011-11-27 19 views
6

गेटटेक्स्ट के साथ, संदेश के मूल (आमतौर पर अंग्रेज़ी) पाठ अनुवाद कुंजी के लिए संदेश कुंजी ("msgstr") के रूप में कार्य करता है। इसका मतलब है कि हर बार मूल पाठ परिवर्तन, प्रत्येक .po फ़ाइलों में अद्यतन किया जाना चाहिए।क्या मैं छोटे टेक्स्ट परिवर्तनों के लिए gettext की .po फ़ाइलों में स्वचालित रूप से संदेश अपडेट कर सकता हूं?

पाठ के वास्तविक परिवर्तनों के लिए, यह स्पष्ट रूप से अपरिहार्य है, क्योंकि अनुवादक को अनुवाद को अपडेट करना होगा।

हालांकि, अगर मूल के परिवर्तन इसका अर्थ नहीं बदलता है, फिर से अनुवाद superflous (punctation में जैसे परिवर्तन, खाली स्थान के परिवर्तन, या वर्तनी की गलती के सुधार) है।

क्या उस मामले में .po फ़ाइलों को स्वचालित रूप से अपडेट करने का कोई तरीका है?

मैं & msgmerge xgettext का उपयोग करने की कोशिश की (फजी मिलान के साथ चालू किया है), लेकिन फजी मिलान कभी कभी विफल रहता है, के साथ साथ इस बदसूरत "#, फजी" झंडे के बहुत सारे पैदा करता है।

नोट: How to efficiently work with gettext PO files when making small edits to large text values हालांकि, इसके बारे में बड़े तार है, इस प्रकार एक अधिक विशिष्ट समस्या के बारे में: एक ऐसी ही सवाल ही नहीं है।

+0

समान प्रश्न को संदर्भित करने के लिए धन्यवाद सौजन्य; मैं इस बात से सहमत हूं कि शायद अलग-अलग उत्तर हैं और डुप्लिकेट पुलिस पर नहीं खेलेंगे - हालांकि मैं कहूंगा कि http://stackoverflow.com/a/3798064/179583 इस पर भी लागू होता है। – natevw

उत्तर

2

समस्या से बचने का एक तरीका है अकेले संदेश छोड़ना, मूल भाषा के लिए .po फ़ाइल रखना और उसमें ठीक करना।

हालांकि यह हमेशा मुझे उचित फिक्स के मुकाबले ज्यादा काम करने के रूप में मारता है। अगले पुनरावृत्ति के लिए (जहां निश्चित रूप से परिवर्तन होंगे) और फिर बदल दिया गया है और या तो अनुवादक इसे अपने सामान्य अद्यतन में अनुवाद करते हैं या प्रत्येक भाषा को हाथ से अपडेट किया जाता है जब यह बदला जाता है।

2

मुझे डीजेंगो परियोजना में मामूली परिवर्तन करते समय वास्तव में यह समस्या आई है। कोड में

  1. बदलें संदेश: मुझे क्या निम्नलिखित है।
  2. पुरानी संदेश को बदलकर सभी अनुवाद फ़ाइलों ("django.po") पर ढूंढें और बदलें, नया संदेश के साथ।
  3. django-admin makemessages चलाएं।

अगर मैं चीजों को सही किया है, अंतिम चरण superflous है (यानी, आप gettext के लिए परिवर्तन किया है)। django gettext उपयोगिताओं का उपयोग करता है, इसलिए इससे कोई फ़र्क नहीं पड़ता कि आप अपनी संदेश फ़ाइलों को कैसे बनाते हैं।

मुझे लगता है और इतने तरह बदल देते हैं: find . -name "*.po" -print | xargs sed -i 's/oldmessageid/newmessageid/g' की http://rushi.vishavadia.com/blog/find-replace-across-multiple-files-in-linux

+1

हां, खोज-और-प्रतिस्थापन का उपयोग करना अन्य स्पष्ट समाधान है (साथ में निश्चित संदेशों का उपयोग करने के डीएसएएस समाधान के साथ)। हालांकि, खोज और प्रतिस्थापन बहुत जटिल हो सकता है, अगर कुछ संदेश दूसरों के सबस्ट्रिंग हैं, या अनुवाद के हिस्से के रूप में भी होते हैं, यदि आपको msgstr "डुप्लिकेट करने की आवश्यकता है (एकाधिक स्थानों में उपयोग की जाने वाली मूल स्ट्रिंग, और केवल कुछ परिवर्तन)। तो यह एक सामान्य समाधान नहीं है। – sleske