5

मैं एक बड़े पैमाने पर परियोजना के दस्तावेज i18n/l10n के कार्य से गुजर रहा हूं। प्रलेखन स्फिंक्स के साथ किया जाता है, जिसमें शेल्फ basic support for i18n है।क्या स्फिंक्स दस्तावेज़ से एक .pot फ़ाइल उत्पन्न करना संभव है?

मेरी समस्या this other question के समान है: अर्थात् तथ्य यह है कि प्रत्येक पॉट फ़ाइल के लिए तारों का एक बड़ा हिस्सा समान होता है, और मैं चाहता हूं कि मेरे अनुवादक बार-बार एक ही अनुवाद को फिर से दर्ज न करें। मेरे पास एक एकल टेम्पलेट फ़ाइल होगी।

मेरे समस्या वास्तव में फ़ाइलें (कि सिर्फ एक msgcat *.pot > all.pot की दूरी पर है) नहीं विलय है, बल्कि तथ्य यह है कि - डोमेन जब किसी विशेष भाषा में प्रलेखन के निर्माण के लिए काम करने के लिए - मैं कॉपी और all.pot वापस नाम बदलने के लिए करने के लिए है मूल फ़ाइल नाम। तो काम कर के अपने workaroundish तरीका है:

  1. उत्पन्न fileA.pot, fileB.pot
  2. मर्ज दो all.pot में
  3. cp all.pot fileA.pot + cp all.pot fileB.pot

वहाँ भी ऐसा ही करने के लिए एक क्लीनर तरीका है? gettext_compact मुझे मेरा लक्ष्य के माध्यम से ही आधे रास्ते लाता है ...

+0

क्या आपने एक अनुवाद मेमोरी (जिसमें अद्वितीय स्रोत/अनुवाद कुंजी-मान हैं) का उपयोग करने पर विचार किया है? – Shervin

+1

@ शेरविन - हां मैंने किया, लेकिन यह परिणाम के लिए कोई लाभ नहीं लाए बिना (मेरे वर्तमान कार्यवाही पर) बिना वास्तुकला की जटिलता में काफी वृद्धि करेगा। – mac

उत्तर

1

7 महीने से अधिक के बाद, व्यापक शोध और कुछ प्रयास किए गए उत्तरों, यह कहना सुरक्षित लगता है कि कम से कम वर्तमान संस्करण 1.1.3 - स्पिनक्स दस्तावेज़ से एक .pot फ़ाइल उत्पन्न करना संभव नहीं है

मूल प्रश्न में वर्णित कार्यवाही भी अलग-अलग .pot फ़ाइलों को एक ही में विलय करते समय डुप्लिकेट तारों को स्वचालित रूप से हटाने के लिए सबसे सरल है।

0

मैं यहाँ दो संभावनाएं देखें:

एक यह है स्फिंक्स हैक करने के लिए सभी पर डोमेन का उपयोग नहीं करने के लिए ... जो मुझे लगता है कि आप के लिए क्या करना चाहते हैं नहीं होगा कई कारण।

दूसरा यह है: चूंकि आप डोमेन द्वारा विभाजित होते हैं, msggrep का एम विकल्प ऐसा लगता है कि आपको क्या करना है। अन्यथा, -एन विकल्प अभी भी स्रोत फ़ाइल द्वारा फ़िल्टर करने के लिए उपयोग किया जा सकता है।

है, स्पष्ट समाधान काम नहीं करता है, तो:

  • fileA.pot, fileB.pot उत्पन्न (भी msguniq यहाँ पर देखने के)
  • उन्हें all.pot में विलय और उस को दे अनुवादकों
  • for x in file*.pot; do msgmerge -o ${x%t} all-translated.po $x; done
TFM के अनुसार

, msgmerge केवल अपना पहला तर्क (अनुवाद पो से (माना जाता है कि इससे नए संस्करण) अनुवाद लेता है फ़ाइल) जो दूसरे तर्क के अद्यतित स्रोत स्थानों से मेल खाता है (पुराने अनुवाद वाले पीओ फ़ाइल, या केवल खाली संदेश के साथ पॉट फ़ाइल = टेम्पलेट)।

+0

मुझे यकीन नहीं है कि मुझे इस समाधान का तकनीकी लाभ मिला है, मेरे वर्तमान हैक पर, क्या आप कृपया स्पष्टीकरण दे सकते हैं? – mac

+0

मैं आपके वर्तमान हैक को अंतिम फ़ाइल A.pot और fileB.pot फ़ाइलों में सभी तारों को समझने के लिए समझ गया और सोचा कि आप उन्हें साफ़ करना चाहते हैं। अगर ऐसा नहीं है तो मुझे डर है कि मैं आपकी समस्या को सही ढंग से समझ नहीं पाया, क्या आप यह स्पष्ट कर सकते हैं कि हम कैसे मदद कर सकते हैं? – mirabilos

+0

प्रश्न का शीर्षक यह सब पहले से ही कहता है। :) इसके अलावा, आपका उत्तर दोहराना प्रतीत होता है - लंबे समय से - प्रश्न में वर्णित समाधान पहले से ही क्या करता है (स्वयं के लिए प्रयास करें, परिणामस्वरूप। पोट पहले से ही साफ है और किसी और को उलझाने की आवश्यकता नहीं है) ... या मैं हूं कुछ भूल रहा हूं? – mac

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

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