我多年来一直在努力使用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文件中的数据只是:
msgstr“”msgstr“”
“Content-Type:text / plain; charset = utf-8 \ n”
“Content-Transfer-Encoding:8bit \ n”
msgstr“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");
输出:qwertyqwerty - 所以没有翻译发生。 当我回显bindtextdomain('messages','locale');我明白了:
/var/www/battlestox/battlestox.com/sites/battlestox/www/locale
所以我相信它指的是正确的位置..
我已经检查过gettext是安装在php中的,服务器上的语言环境是可用的..
:locale -a
de_DE这个
de_DE.iso88591
de_DE.iso885915@euro
de_DE.utf8
de_DE这个@欧元
我正在运行PHP 5.2,Apache 2.2.3,CentOS
请温柔,我在linux上非常基础..
感谢您的帮助!
答案 0 :(得分:2)
尝试使用locale -a报告的确切语言环境名称。例如setlocale(LC_MESSAGES, 'de_DE.utf8');
答案 1 :(得分:0)
我认为您的.mo目录应为/var/www/..blah../locale/de_DE/LC_MESSAGES这是LC_MESSAGES,复数。
正如John所说,你的语言环境名称看起来不太合适。
如果更改.mo文件,则需要重启apache。你做过这个吗?