मैं कुछ स्ट्रिंग्स का अनुवाद करने के लिए PHP gettext एक्सटेंशन का उपयोग करने का प्रयास कर रहा हूं। सभी फ़ंक्शन सही मान वापस करने के लिए प्रतीत होते हैं लेकिन gettext()
/_()
पर कॉल करने से केवल मूल स्ट्रिंग लौटाती है। पीओ/एमओ फाइलें सही लगती हैं और मेरा मानना है कि मैंने निर्देशिकाओं को सही तरीके से सेट किया है। मैं विंडोज़ पर PHP 5.3.10 के साथ WAMP सर्वर चला रहा हूं (5.3.4 और 5.3.8 चलाने की भी कोशिश की क्योंकि मेरे पास इंस्टॉलेशन हैं)।PHP गेटटेक्स्ट - कोई अनुवाद नहीं
सबसे पहले, /new2/www/index.php
देखें:
$locale = 'esn'; # returns Spanish_Spain.1252 in var dump
putenv("LC_ALL={$locale}"); // Returns TRUE
setlocale(LC_ALL, $locale); // Returns 'Spanish_Spain.1252'
$domain = 'messages';
bindtextdomain($domain, './locale'); // Returns C:\wamp\www\new2\www\locale
bind_textdomain_codeset($domain, 'UTF-8'); // Returns UTF-8
textdomain($domain); // Returns'messages'
print gettext("In the dashboard"); // Prints the original text, not the translation.
exit;
मैं निम्नलिखित फ़ाइल संरचना बनाई है: es_ES
, esn
, esp
, Spanish
, और Spanish_Spain
:
www/new2/www/locale/Spanish_Spain.1252/LC_MESSAGES/messages.mo
मैं भी साथ Spanish_Spain.1252
की जगह की कोशिश की है।
पीओ एमओ उत्पन्न करने के लिए इस्तेमाल किया फ़ाइल की तरह तो (केवल प्रासंगिक प्रविष्टि दी गयी है) है:
#: C:\wamp\www\new2/www/index.php:76
msgid "In the dashboard"
msgstr "TRANSLATED es_ES DASHBOARD"
यह PoEdit उपयोग करते हुए उत्पन्न किया गया था। मैंने कोई नया .MO फ़ाइल जोड़ने के बाद अपाचे को पुनरारंभ किया है। यह भी ध्यान रखें कि मैं पहले गेटटेक्स्ट के साथ ज़ेंड_Translate का उपयोग कर रहा था और यह सही ढंग से अनुवाद कर रहा था। मैं मूल गेटटेक्स्ट एक्सटेंशन पर भरोसा करना चाहता हूं, हालांकि, कुछ हद तक क्योंकि मैं अपने स्वयं के हल्के ढांचे को बनाने का प्रयास कर रहा हूं।
किसी भी मदद की सराहना की जाएगी।
संपादित: निर्देशिका संरचना में संशोधन किया। नोट - 24hrs के भीतर हाल के उत्तरों का प्रयास करने में सक्षम हो जाएगा।
क्या आपका लोकेल और निर्देशिका 'es_ES.UTF-8' नहीं होनी चाहिए? – mario
@ मारियो मैंने उस लोकेल और निर्देशिका को आजमाया है लेकिन 'setlocale()' फिर गलत लौटाता है। – Pete171