我有这个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)可能吗?
谢谢:)