问题描述
||
好的,我有以下PHP代码:
<?PHP
$locale = \"es\";
//$locale = $_SERVER[\"HTTP_ACCEPT_LANGUAGE\"];
//if (isSet($_GET[\"locale\"])) $locale = $_GET[\"locale\"];
putenv(\"LC_ALL=$locale\");
putenv(\"LANGUAGE=$locale\");
setlocale(LC_ALL,$locale);
bindtextdomain(\"messages\",\"./locale\");
bind_textdomain_codeset(\"messages\",\'UTF-8\');
textdomain(\"messages\");
echo(getenv(\"LC_ALL\"));
echo(\"<br>\");
echo gettext(\"Hello World!\");
?>
我已经创建了西班牙文messages.po和messages.mo文件,并将它们存储在上述代码所在目录的子目录中。所述目录的路径为:
语言环境/ es / LC_MESSAGES
根据PHPinfo,gettext在我所在的Web服务器上启用(由A Small Orange托管)。
调用页面显示getenv调用返回\'es \',但是原始的英语字符串出来了,而不是预期的西班牙语。我也尝试过_(\“ Hello World!\”),也无济于事。
我没有警告,没有错误,什么都没有。因此,我完全不知道如何解决可能失败的地方。
任何指导将不胜感激。
解决方法
我可能是错的,但是尝试更改...
putenv(\"LC_ALL=$locale\");
putenv(\"LANGUAGE=$locale\");
至
putenv(\"LC_ALL=\".$locale);
putenv(\"LANGUAGE=\".$locale);