Gettext: странное поведение с Wamp на Windows 10 - PullRequest
0 голосов
/ 07 марта 2019

Я разрабатываю многоязычный сайт, моя локальная среда - 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, он работает так, как ожидалось.

Если у вас есть какая-либо информация об этом поведении, может кто-нибудь объяснить мне, почемуэто происходит и в конце концов, как это исправить?

Заранее спасибо.

...