diff --git a/app/config.ini b/app/config.ini index 9bb1850433a52bdeba30e3330712dc31f5cfd3e6..44a0d0a161fcc56224908f29cb4f49c21cff2e5a 100644 --- a/app/config.ini +++ b/app/config.ini @@ -19,11 +19,3 @@ DEBUG=0 ; Langue par défaut LANGUAGE='fr' - -; Variables globales du site -;languages['DE']="support","de_DE","de" -;languages['IT']="sostegno","it_IT","it" -languages['ES']="apoyar","es_ES","es" -languages['FR']="soutien","fr_FR","fr" -languages['EN']="support","en_US","en" - diff --git a/app/config.php b/app/config.php index 616684f54533b902f750bede995c2270fff71aee..705af37534e7a39e9e2946a2d30f2e6023dbc89e 100644 --- a/app/config.php +++ b/app/config.php @@ -28,6 +28,8 @@ define("CTX_MODE", getenv('CTX_MODE')); //define("CERTIFICATE","XXXXXXXXXXXXXXXXXXXXXXXXx"); //define("CTX_MODE","PRODUCTION"); +define("LANGUAGES", "fr_FR,en_US"); + define("PIPLOME_PATH", getenv('PIPLOME_PATH')); define("PIPLOME_URL", getenv('PIPLOME_URL')); diff --git a/app/controller/controller.php b/app/controller/controller.php index 289b4e176cbf8991c73b48a3e3177376ebf35a7f..202731e3c47af0adf3a09bcc68a778267619b182 100644 --- a/app/controller/controller.php +++ b/app/controller/controller.php @@ -22,27 +22,45 @@ class Controller } define("ROOTURL", "https://".$HTTP_HOST.'/'); - // Sélection de la langue par l'url - $main = explode('.', $HTTP_HOST)[0]; - $lang = "fr_FR"; - $lang_short = "fr"; - foreach ($f3->get('languages') as $key => $language) { - if ($main==$language[0]) { - $lang = $language[1]; - $lang_short = $language[2]; + // Sélection de la langue par header + $lang = 'fr_FR'; + $lang_short = 'fr'; + + if ($f3->exists('GET.lang')) { + // On force la langue passée dans l'URL GET + $accept_languages = [$f3->get('GET.lang')]; + $f3->set('SESSION.lang', $f3->get('GET.lang')); + } else { + if ($f3->exists('SESSION.lang')) { + // On a déjà défini une langue précédemment + $accept_languages = [$f3->get('SESSION.lang')]; + } else { + // On récupère la langue du navigateur + $accept_languages = $f3->exists('HEADERS.Accept-Language') ? explode(',', $f3->get('HEADERS.Accept-Language')) : []; + } + } + + foreach (explode(',', LANGUAGES) as $language) { + foreach ($accept_languages as $accept_language) { + if (strpos($language, $accept_language)>=0) { + $lang = $language; + $lang_short = explode($language, '-')[0]; + } } } - if (!bindtextdomain("messages", dirname(__FILE__)."/../locales")) { + + if (!bindtextdomain("messages", "../locales/")) { echo "<!-- bondtextdomain failed -->"; } // Language ok, set the locale environment putenv("LC_MESSAGES=".$lang); putenv("LANG=".$lang); putenv("LANGUAGE=".$lang); - // this locale MUST be selected in "dpkg-reconfigure locales" + if (!setlocale(LC_ALL, $lang)) { - echo "<!-- setlocale failed -->"; + echo "<!-- setlocale $lang failed -->"; } + if (!textdomain("messages")) { echo "<!-- textdomain failed -->"; } diff --git a/app/view/toolbar.html b/app/view/toolbar.html index 875bfdf1c1d4dede92aec377348ae96592045ada..6a575f336d954934dc892e2469b6de823cab2a84 100644 --- a/app/view/toolbar.html +++ b/app/view/toolbar.html @@ -90,8 +90,8 @@ <div class="hidden-xs hidden-sm"> <nav id="up-bar" class="navbar navbar-default dark-blue"> <ul class="nav navbar-nav navbar-right blue"> - <li><a href="?lang=fr">{{ _("[FR]")}}</a></li> - <li><a href="?lang=en">{{ _("[EN]")}}</a></li> + <li><a href="?lang=fr_FR">{{ _("[FR]")}}</a></li> + <li><a href="?lang=en_US">{{ _("[EN]")}}</a></li> </ul> <ul class="nav navbar-nav navbar-right"> <check if="{{ array_key_exists('user', @SESSION) }}">