PHP gettext不起作用

时间:2014-05-14 11:00:52

标签: php gettext php-gettext

Apache 2.4 + PHP 5.5

putenv('LC_ALL=ru_RU');
setlocale(LC_ALL, 'ru_RU');
bindtextdomain('mydomain', '/absolute/path/to/messages');
textdomain('mydomain');

我绝对肯定,我mydomain.po中有mydomain.mo/absolute/path/to/messages/ru_RU/LC_MESSAGES/个文件。
我也把这些文件提供给OS X Maverics的同事 - 工作得很好 我不能让php gettext工作。

我用google搜索/ stackoverflow大约几个小时,尝试了各种解决方案 - 仍然无法正常工作。我做错了什么?

每次更改内容时都会重新启动apache,以确保重新加载gettext文件。

这是我的locale -a输出:

miraage@ubuntu:~$ locale -a
C
C.UTF-8
....
en_GB.utf8
....
POSIX
ru_RU.utf8
ru_UA.utf8

另一个cmd输出:

miraage@ubuntu:~$ sudo locale-gen ru
Generating locales...
  ru_RU.UTF-8... up-to-date
  ru_UA.UTF-8... up-to-date
Generation complete.

好的,我已经想通了:

sudo locale-gen ru_RU(添加了新的区域设置,但是不同的字符集) 和 然后setlocale(LC_ALL, 'ru_RU.UTF-8');完成了所有工作。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

这是一个很长时间被问到的问题,但也许再多一次检查可以帮助那些“仅仅通过指导”尝试所有事情并仍然无效的人。

这是与LANGUAGE环境变量的冲突。

在我的案例中,经过长时间的斗争,我发现它导致了这个问题。删除该环境变量export LANGUAGE=(在=之后为空)解决了正常的setLocale行为。