के साथ पार्सिंग मुझे .po फ़ाइलों से संदेशों को निकालने की आवश्यकता है। क्या ऐसा करने के लिए कोई अजगर-मॉड्यूल है? मैं एक पार्सर लिखता हूं, लेकिन यह मंच पर निर्भर करता है (जैसे \ r \ n, \ n), तो शायद दा के लिए कुछ सामान्य तरीका है?पार्सिंग gettext .po फाइलों को पाइथन
उत्तर
कोलाहल एक पुलिस फाइलों पार्सर पायथन में लिखा भी शामिल है।
उपयोग builtin gettext मॉड्यूल: http://docs.python.org/library/gettext.html
यह python gettext
प्रदान करने के बाद गूगल में पहले खोज परिणाम के रूप में मेरे लिए दिखाई दिया। अगर आपको आश्चर्य हुआ कि क्या आपने यही खोजा है, तो हाँ, यह है।
निर्मित gettext मॉड्यूल केवल बाइनरी mo फाइलों के साथ काम करता है:
ज्यादातर मामलों में आपको .po
फ़ाइलों को स्वयं पार्स करने की आवश्यकता नहीं है। डेवलपर अनुवादकों को .pot
टेम्पलेट फ़ाइल देते हैं, वे इसे xx_XX.po
पर नामित करते हैं और तारों का अनुवाद करते हैं। तो फिर तुम डेवलपर केवल पो, अपने आप को फाइल के बजाय उन्हें संकलन की पार्स करने के लिए की जरूरत है जीएनयू के gettext
उपकरण (या इसके अजगर कार्यान्वयन, pygettext
)
का उपयोग कर .mo
फ़ाइलें करने के लिए उन्हें "संकलन" करने के लिए है के रूप में लेकिन, अगर आप चाहते हैं /, मैं फ़ाइलों को संभालने के लिए एक प्रसिद्ध पायथन पुस्तकालय, polib
का उपयोग करने के लिए दृढ़ता से सुझाव देता है।
PyPi पैकेज घर: http://pypi.python.org/pypi/polib/
कोड भंडार: https://bitbucket.org/izi/polib/wiki/Home
प्रलेखन: http://polib.readthedocs.org
यह मर्क्युरियल और Ubuntu के लॉन्चपैड अनुवाद इंजन के रूप में कई बड़े पैमाने पर परियोजनाओं, द्वारा किया जाता है आयात मॉड्यूल एक फ़ाइल है, एमआईटी लाइसेंस के साथ, ताकि आप आसानी से इसे अपने कोड में शामिल कर सकें:
import polib
po = polib.pofile('path/to/catalog.po')
for entry in po:
print entry.msgid, entry.msgstr
ऐसा नहीं है कि तुलना में आसान नहीं हो सकता है;)
@saeedgnu साथ काम करता है: हो सकता है आप कर सकते थे इसे सुधारने में मदद करें? 'polib' पीओ फाइलों में हेरफेर करने के लिए सबसे व्यापक रूप से उपयोग की जाने वाली लाइब्रेरी है, और इसे सक्रिय रूप से बनाए रखा जाता है, इसलिए किसी भी सुधार से सॉफ्टवेयर के एक * बहुत * लाभ होगा – MestreLion
मुझे लगता है कि यह इस तरह से होना था, इसका उपयोग करने वाला प्रोग्राम कुछ प्रविष्टियों को जोड़ सकता है पीओ फ़ाइल लोड करना (या एक नया पोफाइल ऑब्जेक्ट बनाना), यह सब स्मृति में है – saeedgnu
'gettext' भयानक है, लेकिन यह केवल संकलित' mo' फ़ाइलें, नहीं सादे पाठ 'po' लोगों – MestreLion