From 4862f1beb266aa19ebefe4d74689b1d7fda175c5 Mon Sep 17 00:00:00 2001
From: Okhin <okhin@okhin.fr>
Date: Mon, 17 Dec 2018 18:45:23 +0100
Subject: [PATCH] Translatiosn are now fixed

---
 app/config.ini                |  4 ----
 app/config.php                |  2 ++
 app/controller/controller.php | 34 ++++++++++++++++++++++++----------
 app/view/toolbar.html         |  4 ++--
 4 files changed, 28 insertions(+), 16 deletions(-)

diff --git a/app/config.ini b/app/config.ini
index a263fb7..44a0d0a 100644
--- a/app/config.ini
+++ b/app/config.ini
@@ -19,7 +19,3 @@ DEBUG=0
 
 ; Langue par défaut
 LANGUAGE='fr'
-
-; Variables globales du site
-languages=["fr-FR", "en-US"]
-
diff --git a/app/config.php b/app/config.php
index 616684f..ef40d0b 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 73cdbad..f935182 100644
--- a/app/controller/controller.php
+++ b/app/controller/controller.php
@@ -23,32 +23,46 @@ class Controller
         define("ROOTURL", "https://".$HTTP_HOST.'/');
 
         // Sélection de la langue par header
-        $lang = 'fr-FR';
+        $lang = 'fr_FR';
         $lang_short = 'fr';
 
-        var_dump($f3->get('HEADERS'));
-        /*$accept_languages = $f3->exists('HEADERS.Accept-Language') ? $f3->get('HEADERS.Accept-Language').split[','] : [];
-        //$accept_languages[] = $f3->exists('GET.lang') ? $f3->get('GET.lang') : 'C' ; 
-        foreach ($f3->get('languages') as $language) {
+        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 (LANGUAGES as $language) {
             foreach ($accept_languages as $accept_language) {
-                if (substr($language, $accept_language) > 0) {
+                if (strpos($language, $accept_language)>=0) {
                     $lang = $language;
                     $lang_short = explode($language, '-')[0];
                 }
             }
         }
-         */
-        if (!bindtextdomain("messages", dirname(__FILE__)."/../locales")) {
+
+        var_dump($lang);
+        if (!bindtextdomain("messages", "../locales/")) {
+            var_dump(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 875bfdf..6a575f3 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) }}">
-- 
GitLab