2008-10-02 16 views
13

मैं पर्ल में लिखे गए परिपक्व सीजीआई आवेदन के लिए बहुभाषी समर्थन पेश करने की सोच रहा हूं। मैंने मूल रूप से अनुवाद फ़ाइलों के लिए एक पर्ल हैश (डिस्क पर संग्रहीत) का उपयोग करके अपना स्वयं का समाधान रोल करने पर विचार किया था, लेकिन फिर मैं एक सीपीएएन मॉड्यूल में आया जो ऐसा लगता है जो मैं चाहता हूं (i18n)।मैं अपनी पर्ल स्क्रिप्ट में अंतर्राष्ट्रीयकरण कैसे जोड़ सकता हूं?

क्या किसी को पर्ल में अंतरराष्ट्रीयकरण (विशेष रूप से i18n CPAN मॉड्यूल) के साथ कोई अनुभव है? क्या i18n मॉड्यूल बहुभाषी समर्थन के लिए पसंदीदा तरीका है या क्या मुझे कस्टम समाधान पर पुनर्विचार करना चाहिए?

धन्यवाद

उत्तर

16

सॉफ़्टवेयर स्थानीयकरण पर Perl Journal article है। बहुभाषी समर्थन जोड़ने के दौरान यह आपको एक अच्छा विचार प्रदान करेगा कि आप क्या उम्मीद कर सकते हैं। यह खूबसूरती से लिखा है और विनोदी है।

विशेष रूप से, लेख Locale::Maketext लिखने और बनाए रखने वाले लोगों द्वारा लिखा गया है, इसलिए मैं अनुशंसा करता हूं कि मॉड्यूल को केवल दर्द की मात्रा के आधार पर अनुशंसा की जाए कि लेखकों को इसे सही तरीके से काम करने के लिए सहन करना पड़ा है।

+9

गेटटेक्स्ट पर इसका विचार पुराना है। देखें http://rassie.org/archives/247 – Sergey

3

टिप्पणियों के my question about this एक करने के लिए एक प्रतिक्रिया के रूप में पर्ल कोड स्थानीयकरण करने के बारे this article पढ़ने का सुझाव दिया।

3

यदि आपके पास समय है तो I18N Jifty ढांचे में किया गया तरीका देखें - हालांकि प्रारंभ में काफी उलझन में यह बहुत ही सुरुचिपूर्ण और प्रयोग योग्य है।

वे _ अधिभारित करते हैं ताकि आप कोड में कहीं भी _("text to translate") का उपयोग कर सकें। इन स्ट्रिंग्स का अनुवाद सामान्य रूप से Locale::Maketext का उपयोग करके किया जाता है।

यह वास्तव में शक्तिशाली बनाता है कि जब तक Scalar::Defer का उपयोग करके स्ट्रिंग की आवश्यकता होती है तब तक अनुवाद को स्थगित कर दिया जाता है ताकि आप किसी भी समय स्ट्रिंग को जोड़ना शुरू कर सकें, इससे पहले कि आप जानते हों कि किस भाषा में उनका अनुवाद किया जाएगा। उदाहरण के लिए कॉन्फ़िगरेशन फाइल आदि में। यह वास्तव में I18N के साथ काम करने में आसान बनाता है।

+0

पर्ल में एकल अंडरस्कोर शॉर्टकट _() का उपयोग करना एक खराब डिज़ाइन विकल्प है क्योंकि यह स्वचालित रूप से वैश्विक है। यही कारण है कि [libintl-perl] (https://github.com/gflohr/libintl-perl) पर्ल के लिए मानक एल 10 एन ढांचा एक डबल अंडरस्कोर का उपयोग करता है। –

8

आधुनिक जीएनयू गेटटेक्स्ट, लोकेल :: मकेटेक्स्ट और लोकेल :: टेक्स्टडोमेन की तुलना के लिए http://rassie.org/archives/247 देखें।

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

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