Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.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 don';我不能在生产服务器上工作。(Ubuntu)_Php_Internationalization_Gettext_Ubuntu Server_Php Gettext - Fatal编程技术网

php gettext don';我不能在生产服务器上工作。(Ubuntu)

php gettext don';我不能在生产服务器上工作。(Ubuntu),php,internationalization,gettext,ubuntu-server,php-gettext,Php,Internationalization,Gettext,Ubuntu Server,Php Gettext,我在PHP中使用gettext时遇到问题;我有两个服务器,一个是本地服务器(我在其中开发)在Windows中(使用vs.php)和works find,另一个在Amazon EC2中(Ubuntu 12.04更新),这是生产服务器,在这个服务器中找不到相同的代码 这是我的代码: 我用这个来初始化gettext function initialize_i18n($locale) { $locales_root = "./librerias/noAuto/locale"; puten

我在PHP中使用gettext时遇到问题;我有两个服务器,一个是本地服务器(我在其中开发)在Windows中(使用vs.php)和works find,另一个在Amazon EC2中(Ubuntu 12.04更新),这是生产服务器,在这个服务器中找不到相同的代码

这是我的代码:

我用这个来初始化gettext

function initialize_i18n($locale) {
    $locales_root = "./librerias/noAuto/locale";
    putenv('LANG='.$locale);
    putenv("LC_ALL=" . $locale);
    setlocale(LC_ALL,$locale);
    $domains = glob($locales_root.'/'.$locale.'/LC_MESSAGES/messages*.mo');
    if (count ($domains) > 0)
    {
        $current = basename($domains[0],'.mo');
        $timestamp = preg_replace('{messages-}i','',$current);
        bindtextdomain($current,$locales_root);
        bind_textdomain_codeset( $current, "UTF-8" );
        textdomain($current);
        if ($locale == "en_US")
        {
            if( _("Modificar") === "Modify" ) {
                $system->setDebug( "Translated correctly");
            } else {
                $system->setDebug( "Gettext don't working");
            }
        }
    }
}
initialize_i18n("en_US");
我的项目中的所有文件都是用UTF-8(西班牙语)编码的,.mo和.po是用poedit生成的

我尝试重新加载apache服务,但没有成功


有什么想法吗?

如果它在不同的环境中不起作用,最好检查关键功能是否成功处理


我建议您首先检查bindtextdomain()和bind_textdomain_codeset()的返回值。如果返回为空,则意味着PHP无法找到消息资源文件(仅在Ubuntu上),那么您可以检查运行web服务器和PHP的Unix用户对文件夹和文件的权限。

如果在不同的环境下不起作用,您最好检查是否成功处理了关键功能


我建议您首先检查bindtextdomain()和bind_textdomain_codeset()的返回值。如果返回空白,这意味着PHP无法找到消息资源文件(仅在Ubuntu上),那么您可以检查运行web服务器和PHP的Unix用户对文件夹和文件的权限。

新的一天新的想法!我有一个解决办法

如果您有相同的问题,您需要检查此步骤

1-您的Linux是否安装了这种语言

您可以通过以下方式进行检查:

 locale -a
 # aptitude install language-pack-en
如果未列出您的语言,请安装它,例如,您可以使用以下命令安装英语本地化:

 locale -a
 # aptitude install language-pack-en
完成后重新启动apache

2-您的语言代码在PHP中是否正确

如果您使用locale-a列出了语言代码列表,您将看到您可以使用的语言代码,例如,列出了英语“我的系统”的语言代码: [...] en_NG.utf8 en_NZ.utf8 en_PH.utf8 en_SG.utf8 en_US.utf8 [...] 我的一个错误是,我使用了“en_US”而不是“en_US.utf8”

3-文件夹的名称与语言代码相同。(我的第二个错误)


抱歉我的英语不好

新的一天新的想法!我有一个解决办法

如果您有相同的问题,您需要检查此步骤

1-您的Linux是否安装了这种语言

您可以通过以下方式进行检查:

 locale -a
 # aptitude install language-pack-en
如果未列出您的语言,请安装它,例如,您可以使用以下命令安装英语本地化:

 locale -a
 # aptitude install language-pack-en
完成后重新启动apache

2-您的语言代码在PHP中是否正确

如果您使用locale-a列出了语言代码列表,您将看到您可以使用的语言代码,例如,列出了英语“我的系统”的语言代码: [...] en_NG.utf8 en_NZ.utf8 en_PH.utf8 en_SG.utf8 en_US.utf8 [...] 我的一个错误是,我使用了“en_US”而不是“en_US.utf8”

3-文件夹的名称与语言代码相同。(我的第二个错误)


PD>抱歉我的英语不好

谢谢你的时间,我尝试了你的建议,这是de-output:bindtextdomain($current,$locales\u root)->/home/gudymail/librerias/noAuto/locale----bind\u-textdomain\u代码集($current,$UTF-8”)->UTF-8----textdomain($current)->消息----这是预期的结果?谢谢你的时间,我尝试了你的建议,这是反输出:bindtextdomain($current,$locales\u root)->/home/gudymail/librerias/noAuto/locale----bind\u textdomain\u codeset($current,“UTF-8”)->UTF-8----textdomain($current)->消息----这是预期的?救命恩人!我花了好几个小时才想到这个方向:)谢谢!救命恩人!我花了好几个小时才想到这个方向:)谢谢!