php gettext mo文件加载问题
我有以下php代码:php gettext mo文件加载问题,php,locale,gettext,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
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,响应是正确的(也可以将locale设置为C)。我已启用intl使用LC\u消息
(通过phpinfo()
和定义('LC\u消息')
验证)
在我的本地环境中,翻译工作正常,但在生产服务器(PHP5.4.30)中则不行
我已经重新启动了apache,测试了其他区域设置和许多文件夹分发,但任何一个都有效
如果我将setlocale(LC_消息,'C')
更改为setlocale(LC_消息,'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');
和文件夹locale到/var/www/domain.com/locale/en/LC_MESSAGES/MESSAGES.mo
的翻译已成功加载
但我需要使用任何已安装或未安装到系统中的语言环境文件(使用C作为语言环境)。如何安装C.UTF-8?(我只有C)有可能吗
谢谢:)您应该将
/var/www/domain.com/locale
绑定为域,并将LANG/locale设置为es
或es.UTF-8
。该区域设置也必须安装在服务器上LANG=C
和es/C/LC_消息
很奇怪。不,我没有在我的服务器中安装es_es.UTF-8或es.UTF-8,我不需要。我想使用默认C允许从.mo文件加载任何语言,而不检查系统可用性。@Lito,这是不可能的。您必须在服务器上安装所有区域设置。