Я пытаюсь использовать расширение PHP gettext для перевода некоторых строк. Все функции возвращают правильные значения, но вызов gettext()
/ _()
возвращает только исходную строку. Файлы PO/MO кажутся правильными, и я считаю, что правильно настроил каталоги. Я использую WAMP Server с PHP 5.3.10 в Windows (, также пробовал запускать 5.3.4 и 5.3.8, потому что у меня есть установки ).
Во-первых, см./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;
Я создал следующую файловую структуру:
www/new2/www/locale/Spanish_Spain.1252/LC_MESSAGES/messages.mo
Я также попытался заменить Spanish_Spain.1252
на :es_ES
, esn
, esp
, Spanish
и Spanish_Spain
.
Файл PO, используемый для создания MO, подобен этому (только соответствующая запись дана):
#: C:\wamp\www\new2/www/index.php:76
msgid "In the dashboard"
msgstr "TRANSLATED es_ES DASHBOARD"
Это было создано с помощью PoEdit. Я перезапустил Apache после добавления любого нового файла.MO. Также обратите внимание, что ранее я использовал Zend _Translate с Gettext, и он переводил правильно. Однако я хочу полагаться на родное расширение gettext, отчасти потому, что пытаюсь создать собственную облегченную структуру.
Будем признательны за любую помощь.
Редактировать:Изменена структура каталогов. Примечание -сможет попробовать последние ответы в течение 24 часов.