gettext的功能奇怪

时间:2014-06-13 18:31:39

标签: php apache windows-server-2008 php-gettext

gettext有一个非常奇怪的情况。

我在Windows Server 2008上配置了Apache服务器。我安装了默认的XAMPP发行版并调整了一些设置。该网站运行良好,但情况如下:

  • 我在php.ini
  • 中启用了php_gettext.dll
  • 我检查了区域设置文件是否位于正确位置,并且网站正确读取它们。我使用了这些函数并获得了以下输出:

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)

  • 默认语言为西班牙语,但由于某种原因,网站默认加载英语区域设置,忽略西班牙语或葡萄牙语区域​​设置。参数正确传递.htaccess。这告诉我gettext正在运行,但只是英语。它有3种语言和2种语言环境。默认的西班牙语,英语和葡萄牙语语言环境文件。

我在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");

知道原因可能是什么?

0 个答案:

没有答案