Я разрабатываю многоязычный сайт, моя локальная среда - 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 установлены
Когда я тестирую его на prod-сервере под Ubuntu, все работаетотлично, en locale дает преобразования en_US, а fr locale дает преобразования fr_FR.Но в среде локали с сервером wamp и Windows 10, локали en никогда не дают traduction en_US, а локаль fr иногда дает tradction 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
И, как я уже сказал, когда все загружается на Prod Server Ubuntu, он работает так, как ожидалось.
Если у вас есть какая-либо информация об этом поведении, может кто-нибудь объяснить мне, почемуэто происходит и в конце концов, как это исправить?
Заранее спасибо.