2012-05-03 13 views
5

मेरे पास एक वेब एप्लिकेशन है जहां मेरे पास गेटटेक्स्ट का उपयोग करके कई अनुवाद हैं। लेकिन अब मैंने एप्लिकेशन का एक बड़ा पुनर्लेखन किया है और अधिकांश तार समान हैं, वहीं कुछ ऐसे हैं जो महत्वपूर्ण रूप से बदल दिए गए या हटा दिए गए।अप्रयुक्त गेटटेक्स्ट तारों को स्वचालित रूप से कैसे हटाएं?

मैं .po फ़ाइलों को बनाने के लिए xgettext का उपयोग करता हूं और कोड में नए तारों को ढूंढने और उन्हें .po फ़ाइलों में जोड़ने में सक्षम होना बहुत अच्छा है, लेकिन मुझे स्ट्रिंग को हटाने का विकल्प नहीं दिख रहा है जो नहीं हैं कोड में मिला

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

+1

यह स्वचालित नहीं है, लेकिन मेरा काम xgettext को दो बार चलाने के लिए है। पहला रन मैं पैरामीटर --no-location का उपयोग करता हूं। दूसरा रन स्थान पर फ़ाइलों को वापस रखता है। अब टेक्स्ट स्ट्रिंग्स जिनका अब उपयोग नहीं किया गया है, उनमें कोई स्थान नहीं है और इसे हटाने के लिए आसानी से पहचाना जा सकता है। – getSurreal

उत्तर

0

Сan तो

find . -name '*.po' -print0 | while read -d '' -r file; do msgattrib --output-file="$file" --no-obsolete "$file"; done 
3

जाना चाहिए तुम्हें एक ताजा पीओ टेम्पलेट फ़ाइल कि केवल तार कि अंतिम पीओ सूची में messages.pot नामक एक फ़ाइल में होना चाहिए, और message.po में पीओ सूची को लक्षित करते हैं है, आप कर सकते हैं ऐसा करें:

msgattrib --set-obsolete --ignore-file=messages.pot -o messages.po messages.po 

यह किसी भी अप्रचलित तार को चिह्नित करता है। --set-obsolete स्विच अप्रचलित लक्ष्य फ़ाइल में सभी तारों के लिए ध्वज को लागू करने के लिए msgstr "--ignore-file निर्दिष्ट फ़ाइल में दिखाई देने वाली तारों को अनदेखा करने के लिए कहता है (हमारे मामले में पीओ टेम्पलेट) को लागू करने के लिए msgstr" msgstr "

msgattrib --no-obsolete -o messages.po messages.po 

आप और अधिक के बारे में msgattrib आदेश here पढ़ सकते हैं:

आप भी पूरी तरह से उन्हें हटाने के लिए चाहते हैं, तो एक और कदम है।

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