2

阿帕奇 2.4 + PHP 5.5

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

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

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

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

这是我的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');完成了所有工作。

感谢帮助。

4

1 回答 1

0

这是一个由来已久的问题,但也许再做一次检查会帮助那些“仅按指示”尝试一切但仍然不起作用的人。

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

就我而言,经过长时间的战斗后,我发现这是导致问题的原因。删除该环境变量export LANGUAGE=(空,之后=)解决了正常setLocale行为。

于 2018-05-19T20:54:49.313 回答