2010-04-30 9 views
12

मैं वर्तमान में कोडिनेटर PHP आधारित एप्लिकेशन के साथ काम कर रहा हूं और उस बिंदु पर आया हूं जहां यह कई भाषाओं के साथ जाने वाला है।कई प्राकृतिक भाषाओं के साथ काम करने का सबसे प्रभावी तरीका

क्या कोडनिर्देशक भाषा भाषा को संभालने का सबसे प्रभावी तरीका है? क्या कोई विशिष्ट भाषा-उपकरण/पुस्तकालय है जो आमतौर पर PHP ऐप्स में उपयोग किया जाता है?

धन्यवाद!

उत्तर

12

मैंने कभी भी CI_Language का उपयोग नहीं किया है, लेकिन ऐसा लगता है कि अनुवाद करने के लिए भाषा सरणी का उपयोग किया जाता है।

इस प्रकार विधि का अत्यधिक सरल उदाहरण:

$trans = array(
    'MAIN_TITLE' => 'Title Here' 
); 

echo $trans['MAIN_TITLE']; 

व्यक्तिगत तौर पर मैं यह वास्तव में कष्टप्रद है क्योंकि आप फिर उन दृश्यों को उपयोगी पाठ के बजाय सरणी कुंजी नाम से भरा हैं संपादित किए जा रहे हैं। जो कभी-कभी काफी परेशान हो सकता है। उल्लेख नहीं है कि आपको याद रखना होगा कि कौन सी कुंजी कई स्थानों पर उनका उपयोग कर रहे हैं, तो किन तारों से संबंधित है।

मैं Gettext का उपयोग करता हूं जो मुझे बहुत आसान लगता है। आपको केवल अनुवाद विधि के साथ अपने तारों को लपेटना होगा: _()। फिर एक बार जब आप अपने ऐप के साथ काम कर लेंगे, तो आप PoEdit खोलें और नई भाषा फ़ाइल बनाएं। PoEdit मेरी सभी स्रोत फ़ाइलों को पार्स करेगा जो इस <?php echo _('Title here') ?> की तरह लपेटकर तारों की तलाश में हैं और उन्हें .po भाषा फ़ाइल में डालें। फिर आप स्ट्रिंग द्वारा स्ट्रिंग जा सकते हैं और PoEdit के भीतर आसानी से टेक्स्ट का अनुवाद कर सकते हैं। इसका लाभ यह है कि आपके पास PoEdit के भीतर स्रोत अनुवाद है, कुछ अर्थहीन सरणी कुंजी नाम के बजाय फ़ाइल

यह सब मेरे जीवन को बहुत आसान बनाता है जिसमें मैं प्रत्येक शुक्रवार को एक क्लिक के साथ अपनी भाषा फ़ाइलों को अपडेट कर सकता हूं । कोई भी नया या संशोधित अनुवाद स्वचालित रूप से मेरी भाषा फ़ाइल में जोड़ा जाएगा, और किसी भी अप्रयुक्त अनुवाद स्वचालित रूप से हटा दिए जाएंगे। मैं फ़ाइलों को अनुवाद के लिए अपनी 3 अंतरराष्ट्रीय शाखाओं में भेजता हूं, और मेरे परिवर्तन और अद्यतन भाषा फाइलें सोमवार सुबह

+0

आपके उत्तर के लिए धन्यवाद, मार्क। बहुत ही सराहनीय। Gettext का उपयोग कर आपका दृष्टिकोण दिलचस्प है! मैं काफी कुछ करने के बारे में सोच रहा हूं, लेकिन एक डेटाबेस संस्करण जो भारी कैश किया जाएगा और इसके बजाय अनुरोध पर अपडेट किया जाएगा। – Industrial

+0

हालांकि इस मुद्दे के विभिन्न दृष्टिकोणों पर और उदाहरण देखने के लिए वाकई अच्छा लगेगा, यह नहीं कह रहा कि आपका समाधान खराब है! – Industrial

+1

आप कुछ अतिरिक्त विचारों के लिए ZF को डाउनलोड करना और Zend_Translate के लिए विभिन्न एडेप्टर देख सकते हैं: http://framework.zend.com/manual/en/zend.translate.adapter.html। वे सभी लोकप्रिय स्थानीयकरण विधियों को बहुत अधिक कवर करते हैं – Mark

1

पर तैनात होने के लिए तैयार हैं, आप php intl लाइब्रेरी में एक देखना चाहते हैं। http://php.net/intl

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