2009-07-28 16 views
5

मैंने हमेशा गेटटेक्स्ट के बारे में सुना है - मुझे पता है कि यह कुछ प्रकार का यूनिक्स कमांड है जो एक स्ट्रिंग तर्क के आधार पर अनुवाद देखने के लिए है, और उसके बाद एक .pot फ़ाइल उत्पन्न करता है लेकिन क्या कोई मुझे आम आदमी के शब्दों में बता सकता है कि यह कैसे देखभाल की जाती है एक वेब ढांचे में?गेटटेक्स्ट के साथ PHP में i18n के लिए समर्थन जोड़ना?

मैं यह देखने के लिए चारों ओर मिल सकता हूं कि कुछ स्थापित ढांचे ने इसे कैसे किया है, लेकिन एक आम आदमी की व्याख्या मदद करेगी क्योंकि इससे वास्तव में चीजों को हल करने में मदद मिल सकती है इससे पहले कि मैं वास्तव में अपने स्वयं के समाधान प्रदान करता हूं।

उत्तर

12

गेटटेक्स्ट सिस्टम एक ही वाक्य के लिए अलग-अलग भाषाओं में अनुवाद वाले स्रोत टेक्स्ट फ़ाइलों से बनाए गए बाइनरी फ़ाइलों के सेट से तारों को जोड़ता है।

लुकअप कुंजी "आधार" भाषा में वाक्य है।

अपने स्रोत कोड में

आप की तरह

echo _("Hello, world!"); 

कुछ प्रत्येक भाषा के लिए आप कुंजी और अनुवादित संस्करण के साथ एक इसी पाठ फ़ाइल ही होगी (ध्यान दें% s कि printf कार्यों के साथ इस्तेमाल किया जा सकता)

french 
msgid "Hello, world!" 
msgstr "Salut, monde!" 
msgid "My name is %s" 
msgstr "Mon nom est %s" 

italian 
msgid "Hello, world!" 
msgstr "Ciao, mondo!" 
msgid "My name is %s" 
msgstr "Il mio nome è %s" 

ये मुख्य कदम आप अपने स्थानीयकरणों बनाने के लिए के माध्यम से जाने की जरूरत है

  • सभी अपने पाठ उत्पादन gettext कार्य (gettext()), ngettext (, _()) का उपयोग करना चाहिए
  • उपयोग xgettext (* nix) अपने php फ़ाइलें पार्स करने के लिए और आधार पुलिस पाठ फ़ाइल
  • उपयोग poedit बनाने पुलिस फाइलों को अनुवाद ग्रंथों जोड़ने
  • उपयोग msgfmt (* nix) पुलिस फाइल से बाइनरी मो फ़ाइल बनाने के लिए
  • की तरह एक निर्देशिका संरचना में मो फाइलें डाल

भाषा/de_DE/LC_MESSAGES/myPHPApp.mo

भाषा/en_EN/LC_MESSAGES/myPHPApp.mo

भाषा/it_IT/LC_MESSAGES/myPHPApp.mo

तो आप PHP स्क्रिप्ट स्थान

उदाहरण प्रयोग की जाने वाली php से जरूरत है कि सेट करना होगा मैनुअल कि भाग के लिए बहुत स्पष्ट है

<?php 
// Set language to German 
setlocale(LC_ALL, 'de_DE'); 

// Specify location of translation tables 
bindtextdomain("myPHPApp", "./locale"); 

// Choose domain 
textdomain("myPHPApp"); 

// Translation is looking for in ./locale/de_DE/LC_MESSAGES/myPHPApp.mo now 

// Print a test message 
echo gettext("Welcome to My PHP Application"); 

// Or use the alias _() for gettext() 
echo _("Have a nice day"); 
?> 
php पुस्तिका से

हमेशा एक अच्छा ट्यूटोरियल

+0

लेकिन इसके बाद के संस्करण के लिए देखो here PHP मैनुअल उदाहरण दिए गए स्ट्रिंग का अनुवाद नहीं प्रतीत होता है। क्या उदाहरण के साथ कुछ और करने के लिए है? –

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