Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php gettext mo文件加载问题_Php_Locale_Gettext - Fatal编程技术网

php gettext mo文件加载问题

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

我有以下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,响应是正确的(也可以将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,这是不可能的。您必须在服务器上安装所有区域设置。