Gettext:Windows 10上Wamp的怪异行为

时间:2019-03-07 09:35:51

标签: windows-10 wampserver php-7 gettext

我正在开发一个多语言站点,我的本地环境是Windows10,Wampserver 3.1.3,PHP-7.2.4

我已经设置了所有内容:

if(isset($_GET["locale"])){
    if($_GET["locale"] == 'en') {
        $locale = "en_US";
        $_SESSION['locale'] = $locale;
    }
    else {
        $locale = "fr_FR";
        $_SESSION['locale'] = $locale;
    }
}
else if( isset($_SESSION["locale"]) ) {
    $locale = $_SESSION["locale"];
}
else {
    $locale = "fr_FR";
}


$lpath = realpath(dirname (__FILE__)) . DIRECTORY_SEPARATOR . "locale";
putenv("LANGUAGE=$locale");
setlocale(LC_ALL, $locale);
bindtextdomain($locale, $lpath);
bind_textdomain_codeset($locale, 'UTF-8');
textdomain($locale);

语言环境结构类似于:

locale
  |en_US
    |LC_MESSAGES
      |en_US.po
      |en_US.mo
  |fr_FR
    |LC_MESSAGES
      |fr_FR.po
      |fr_FR.mo

已安装所有语言环境fr_FR,fr_FR.UTF-8,en_US和en_US.UTF-8

当我在Ubuntu下的prod服务器上对其进行测试时,一切工作正常,en区域设置给出了en_US转换,fr区域设置给出了fr_FR转换。 但是在带有wamp服务器和Windows 10的语言环境中,en语言环境永远不会给出en_US转换,而fr语言环境有时会给出fr_FR转换。 例如:

{{ "404"|trans }} will return "Erreur 404 : page non trouvée" with fr locale
{{ "404"|trans }} will return "Erreur 404 : page non trouvée" with en locale
{{ "message.404"|trans }} will return "message.404" with fr locale
{{ "messages.404"|trans }} will return "message.404" with en locale

就像我说的,一旦一切都在产品服务器Ubuntu上上传,它就会按预期工作。

如果您有关于该行为的任何信息,有人可以向我解释为什么会发生这种情况,并最终解决该问题吗?

谢谢。

0 个答案:

没有答案