无法在PHP,Linux中使用gettext

时间:2011-11-01 15:55:12

标签: php gettext

我多年来一直在努力使用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上非常基础..

感谢您的帮助!

2 个答案:

答案 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。你做过这个吗?