Не удается получить gettext, работающий в PHP, Linux - PullRequest
3 голосов
/ 01 ноября 2011

Я боролся с Gettext сейчас целую вечность и просто не могу заставить его работать.Я был бы всегда благодарен, если бы кто-нибудь мог помочь мне с этим ... Я искал решения и пробовал несколько вариантов, но у меня ничего не работает.

Я создал следующую файловую структуру:

/ var / www / battlestox / battlestox.com / sites / battlestox / www / locale / de_DE / LC_MESSAGE / messages.po /var/www/battlestox/battlestox.com/sites/battlestox/www/locale/de_DE/LC_MESSAGE/messages.mo

данные в .po файле просто:

msgid ""

msgstr ""

"Content-Type: text / plain; charset = utf-8 \ n"

"Content-Transfer-Encoding: 8bit \ n"

msgid "qwerty"

msgstr "Переводчик работает!"

Файл php имеет следующий код:

putenv("LANG=de_DE.UTF-8");
setlocale(LC_MESSAGES, 'de_DE.UTF-8');
bindtextdomain('messages', 'locale');
bind_textdomain_codeset('messages', 'UTF-8');
textdomain('messages');

echo gettext("qwerty");
echo _("qwerty");

output: qwertyqwerty - так что перевод не происходит.когда я повторяю bindtextdomain ('messages', 'locale');Я получаю:

/ var / www / battlestox / battlestox.com / sites / battlestox / www / locale

, поэтому я считаю, что он указывает на правильное местоположение ..

Я проверил, что gettext установлен в php и локали на сервере доступны ..

: локаль -a

de_DE

de_DE.iso88591

de_DE.iso885915@euro

de_DE.utf8

de_DE @ euro

Я использую PHP 5.2, Apache 2.2.3, CentOS

Пожалуйста, будьте осторожны, я очень разбираюсь в Linux ..

Спасибо за любую помощь!

Ответы [ 2 ]

2 голосов
/ 01 ноября 2011

Попробуйте использовать точное имя локали, указанное в локали -aeg setlocale(LC_MESSAGES, 'de_DE.utf8');

0 голосов
/ 02 ноября 2011

Я думаю, что ваш каталог .mo должен быть /var/www/..blah../locale/de_DE/LC_MESSAGES. Это LC_MESSAGES, множественное число.

Также, как говорит Джон, название вашей локали выглядит не совсем правильно.

Если вы измените файл .mo, вам нужно перезапустить apache. Вы сделали это?

...