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');

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

我已经搜索了/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');就会起作用。

这是一个被问了很长时间的问题,但也许再检查一次会帮助那些"只是按照指示"尝试一切但仍然不起作用的人。

LANGUAGE环境变量冲突

在我的情况下,不久前经过长时间的争吵,我发现这是导致问题的原因。删除环境变量export LANGUAGE=(在=之后为空)解决了正常的setLocale行为。

最新更新