[10.0.121.dev] détermination de la langue du navigateur, correctif
This commit is contained in:
parent
682a7a6e80
commit
2e2b90a0ae
@ -32,7 +32,7 @@ class common {
|
|||||||
const I18N_DIR = 'site/i18n/';
|
const I18N_DIR = 'site/i18n/';
|
||||||
|
|
||||||
// Numéro de version
|
// Numéro de version
|
||||||
const ZWII_VERSION = '10.0.120.dev';
|
const ZWII_VERSION = '10.0.121.dev';
|
||||||
|
|
||||||
public static $actions = [];
|
public static $actions = [];
|
||||||
public static $coreModuleIds = [
|
public static $coreModuleIds = [
|
||||||
@ -181,30 +181,35 @@ class common {
|
|||||||
|
|
||||||
// Déterminer la langue du visiteur
|
// Déterminer la langue du visiteur
|
||||||
// --------------------------------
|
// --------------------------------
|
||||||
// 1 Langue sélectionnée par l'utilisateur prioritaire
|
// 1 Lire la langue sélectionnée
|
||||||
if (isset($_SESSION['ZWII_USER_I18N'])) {
|
if (isset($_SESSION['ZWII_USER_I18N'])) {
|
||||||
$i18nPOST = $_SESSION['ZWII_USER_I18N'];
|
|
||||||
|
$i18nFront = $this->i18nIsValid($_SESSION['ZWII_USER_I18N']) ? $_SESSION['ZWII_USER_I18N'] : 'fr';
|
||||||
|
|
||||||
|
// Sauvegarder la sélection
|
||||||
|
$this->seti18N($i18nFront);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
// Déterminer la langue de l'interface
|
||||||
$i18nPOST = '';
|
$i18nPOST = '';
|
||||||
|
|
||||||
|
// Lire la langue du navigateur
|
||||||
|
$i18nHTTP = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
|
||||||
|
|
||||||
|
// La langue sélectionnée par l'utilisateur est-elle valide sinon fr
|
||||||
|
$i18nPOST = $this->i18nIsValid($i18nPOST) === true ? $i18nPOST : '';
|
||||||
|
|
||||||
|
// La langue du navigateur est elle disponible sinon fr
|
||||||
|
$i18nHTTP = $this->i18nIsValid($i18nHTTP) === true ? $i18nHTTP : 'fr';
|
||||||
|
|
||||||
|
// Détermine la langue selon la priorité
|
||||||
|
$i18nFront = $i18nPOST === '' ? $i18nHTTP : 'fr';
|
||||||
|
|
||||||
|
// Sauvegarder la sélection
|
||||||
|
$this->seti18N($i18nFront);
|
||||||
}
|
}
|
||||||
// 2 Langue du navigateur
|
|
||||||
$i18nHTTP = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
|
|
||||||
|
|
||||||
// !! La langue du navigateur est elle disponible sinon fr
|
|
||||||
$i18nHTTP = key_exists($i18nHTTP, self::$i18nList) ? $i18nHTTP : 'fr';
|
|
||||||
|
|
||||||
// Détermine la langue selon la priorité
|
|
||||||
$i18nFrontEnd = $i18nPOST === '' ? $i18nHTTP : $i18nPOST;
|
|
||||||
|
|
||||||
// Vérifier la validité de la langue sélectionnée sinon fr
|
|
||||||
if ( !file_exists(self::DATA_DIR . $i18nFrontEnd . '/page.json') &&
|
|
||||||
!file_exists(self::DATA_DIR . $i18nFrontEnd . '/module.json') ) {
|
|
||||||
$i18nFrontEnd = 'fr';
|
|
||||||
$_SESSION['ZWII_USER_I18N'] = 'fr';
|
|
||||||
}
|
|
||||||
|
|
||||||
// Sauvegarder la sélection
|
|
||||||
$this->seti18N($i18nFrontEnd);
|
|
||||||
|
|
||||||
// Utilisateur connecté
|
// Utilisateur connecté
|
||||||
if($this->user === []) {
|
if($this->user === []) {
|
||||||
@ -368,15 +373,10 @@ class common {
|
|||||||
* @param aucun
|
* @param aucun
|
||||||
* @return string code iso de la langue
|
* @return string code iso de la langue
|
||||||
*/
|
*/
|
||||||
public function geti18n() {
|
public function geti18n() {
|
||||||
|
|
||||||
if (isset ($_SESSION['ZWII_USER_I18N']) ) {
|
if (isset ($_SESSION['ZWII_USER_I18N']) ) {
|
||||||
return ($_SESSION['ZWII_USER_I18N']);
|
return ($_SESSION['ZWII_USER_I18N']);
|
||||||
}
|
}
|
||||||
// La valeur de la session n'est pas une version installée, remettre à fr
|
|
||||||
unset($_SESSION['ZWII_USER_I18N']);
|
|
||||||
$this->seti18n();
|
|
||||||
return ('fr');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -411,6 +411,22 @@ class common {
|
|||||||
return (in_array($iso,$default) === true ? 'core/vendor/i18n/png/' : self::FILE_DIR . 'source/i18n/png/' );
|
return (in_array($iso,$default) === true ? 'core/vendor/i18n/png/' : self::FILE_DIR . 'source/i18n/png/' );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Vérifier si la langue est installée
|
||||||
|
* @return @bool
|
||||||
|
* Vérifie : l'existence des fichiers de données ;
|
||||||
|
* la présence dans la liste des langues dispos ;
|
||||||
|
* la présence dans la configuration su site
|
||||||
|
*/
|
||||||
|
public function i18nIsValid ($lan) {
|
||||||
|
if ( file_exists(self::DATA_DIR . $lan . '/page.json') &&
|
||||||
|
file_exists(self::DATA_DIR . $lan . '/module.json') &&
|
||||||
|
key_exists($lan, self::$i18nList) &&
|
||||||
|
is_array($this->getData(['config','i18n',$lan]) ) ) {
|
||||||
|
return (true);
|
||||||
|
}
|
||||||
|
return (false);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Récupérer une copie d'écran du site Web pour le tag image si le fichier n'existe pas
|
* Récupérer une copie d'écran du site Web pour le tag image si le fichier n'existe pas
|
||||||
|
Loading…
x
Reference in New Issue
Block a user