From 3e53df3e7f244cfbd0345d26289b1a2a33df0068 Mon Sep 17 00:00:00 2001 From: fredtempez Date: Fri, 15 Jan 2021 14:34:06 +0100 Subject: [PATCH] =?UTF-8?q?Langue=20du=20navigateur=20+=20d=C3=A9sactivati?= =?UTF-8?q?on=20de=20la=20langue=20s=C3=A9lectionn=C3=A9e.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/core.php | 25 +++++++++++++++---------- core/module/translate/translate.php | 24 ++++++++++++++++++------ 2 files changed, 33 insertions(+), 16 deletions(-) diff --git a/core/core.php b/core/core.php index 3ed1abad..a475a691 100755 --- a/core/core.php +++ b/core/core.php @@ -246,19 +246,24 @@ class common { * Traduction automatisée * - Exclure la traduction manuelle * - La mangue du navigateur est lisible - * - L'autodétection est active + * - L'auto-détection est active */ - if ( $this->getData(['config','translate','scriptGoogle']) === true ) { + if ( $this->getData(['config','translate','scriptGoogle']) === true + AND $this->getData(['config','translate','autoDetect']) === true + AND $this->getInput('ZWII_I18N_SITE') === '' + AND !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) ) + { + /** + * Le cookie est prioritaire sur le navigateur + * la traduction est celle de la langue du drapeau + * */ - if ( $this->getData(['config','translate',$this->getInput('ZWII_I18N_SITE')]) === 'script' ) - { - setrawcookie('googtrans', '/fr/'. $this->getInput('ZWII_I18N_SITE'), time() + 3600, helper::baseUrl()); - } elseif ( $this->getData(['config','translate','autoDetect']) === true - AND $this->getData(['config','translate',$this->getInput('ZWII_I18N_SITE')]) !== 'site' - AND !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) ) - { - setrawcookie('googtrans', '/fr/'. substr( $_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2 ), time() + 3600, helper::baseUrl()); + if (isset($_COOKIE['googtrans']) + AND substr($_COOKIE['googtrans'],4,2) !== substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2 ) ) { + setrawcookie('googtrans', '/fr/'.substr($_COOKIE['googtrans'],4,2), time() + 3600, helper::baseUrl()); + } else { + setrawcookie('googtrans', '/fr/'.substr( $_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2 ), time() + 3600, helper::baseUrl()); } } diff --git a/core/module/translate/translate.php b/core/module/translate/translate.php index cd55392e..b773845e 100755 --- a/core/module/translate/translate.php +++ b/core/module/translate/translate.php @@ -181,13 +181,25 @@ class translate extends common { * Fonction utilisée par le noyau */ public function language() { - // Transmettre le choix au noyau - if ($this->getUrl(3) === 'script') { - setrawcookie("googtrans", '/fr/'. $this->getUrl(2), time() + 3600, helper::baseUrl()); + // Sélection et désélection de la lnague active + if ( $this->getUrl(2) !== substr($_COOKIE['googtrans'],4,2)) + { + // Transmettre le choix au noyau + if ($this->getUrl(3) === 'script') { + setrawcookie("googtrans", '/fr/'. $this->getUrl(2), time() + 3600, helper::baseUrl()); + helper::deleteCookie('ZWII_I18N_SITE'); + } elseif ($this->getUrl(3) === 'site') { + setcookie('ZWII_I18N_SITE', $this->getUrl(2), time() + 3600, helper::baseUrl(false, false) , '', helper::isHttps(), true); + setrawcookie("googtrans", '/fr/fr', time() + 3600, helper::baseUrl()); + } + } else { + // Langue du navigateur par défaut si dispo helper::deleteCookie('ZWII_I18N_SITE'); - } elseif ($this->getUrl(3) === 'site') { - setcookie('ZWII_I18N_SITE', $this->getUrl(2), time() + 3600, helper::baseUrl(false, false) , '', helper::isHttps(), true); - setrawcookie("googtrans", '/fr/fr', time() + 3600, helper::baseUrl()); + if (!empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) ) { + setrawcookie("googtrans", '/fr/'. substr( $_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2 ), time() + 3600, helper::baseUrl()); + } else { + setrawcookie("googtrans", '/fr/fr', time() + 3600, helper::baseUrl()); + } } // Valeurs en sortie $this->addOutput([