gettext有一个非常奇怪的情况。
我在Windows Server 2008上配置了Apache服务器。我安装了默认的XAMPP发行版并调整了一些设置。该网站运行良好,但情况如下:
input: var_dump(file_exists('./locale/language_code/LC_MESSAGES/file.mo'));
output: bool(true)
input: var_dump(fileperms('./locale/language_code/LC_MESSAGES/file.mo'));
output: int(33204)
我在HostGator托管上测试了相同的配置,该网站运行正常。不同的是HostGator托管是Linux,客户端的服务器是Windows。操作系统更改不是一种选择。当我们将站点上传到客户端服务器时,语言问题就开始了。
我尝试exec("locale -a",$output);
但由于某种原因,$output
是一个空数组。我认为编码可能是问题,我会尝试更改它,但与此同时这是我用于语言环境的代码:
if(!$_GET["locale"] || $_GET["locale"] == "es_LA") {
$locale = "es_LA";
} else if($_GET["locale"] == "en_US") {
$locale = "en_US";
} else if($_GET["locale"] == "pt_PT") {
$locale = "pt_PT";
}
putenv("LC_ALL=".$locale.".utf8");
setlocale(LC_ALL, $locale.".utf8");
bindtextdomain("file", "./locale");
bind_textdomain_codeset("file", "UTF-8");
textdomain("file");
知道原因可能是什么?