我正在开发一个多语言站点,我的本地环境是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上上传,它就会按预期工作。
如果您有关于该行为的任何信息,有人可以向我解释为什么会发生这种情况,并最终解决该问题吗?
谢谢。