php gettext mo文件加载的问题

时间:2014-07-31 14:08:59

标签: php locale gettext

我有这个PHP代码:

putenv('LANG=C.UTF-8');
setlocale(LC_MESSAGES, 'C');

bindtextdomain('messages', '/var/www/domain.com/locale/es');
bind_textdomain_codeset('messages', 'UTF-8');
textdomain('messages');

我的文件夹区域设置为/var/www/domain.com/locale/es/C/LC_MESSAGES/messages.mo

对每个gettext命令使用echo,响应是正确的(也是setlocale到C)。我已启用intl以使用LC_MESSAGES(已通过phpinfo()defined('LC_MESSAGES')验证)

在我的本地环境中,翻译工作正常,但在生产服务器中没有(PHP 5.4.30)。

我已经重新启动了apache,测试了其他语言环境,很多文件夹分发,但是都有效。

如果我将setlocale(LC_MESSAGES, 'C')更改为setlocale(LC_MESSAGES, 'C.UTF-8'),则setlocale将返回false。

如何调试PHP寻找.mo文件的位置?

更新

使用此代码:

putenv('LANG=en_US.UTF-8');
setlocale(LC_MESSAGES, 'en_US.UTF-8');

bindtextdomain('messages', '/var/www/domain.com/locale');
bind_textdomain_codeset('messages', 'UTF-8');
textdomain('messages');

成功加载/var/www/domain.com/locale/en/LC_MESSAGES/messages.mo翻译的文件夹区域设置。

但我需要在系统中使用或不使用任何语言环境文件(使用C作为语言环境)。如何安装C.UTF-8? (我只有C)可能吗?

谢谢:)

0 个答案:

没有答案