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');
完成了所有工作。
感谢您的帮助。
答案 0 :(得分:0)
这是一个很长时间被问到的问题,但也许再多一次检查可以帮助那些“仅仅通过指导”尝试所有事情并仍然无效的人。
这是与LANGUAGE
环境变量的冲突。
在我的案例中,经过长时间的斗争,我发现它导致了这个问题。删除该环境变量export LANGUAGE=
(在=
之后为空)解决了正常的setLocale
行为。