[10.0.06.dev] changement de langue WIP

This commit is contained in:
fredtempez 2019-08-23 22:01:24 +02:00
parent 60688117f6
commit baeb55522b
3 changed files with 44 additions and 27 deletions

View File

@ -383,7 +383,7 @@ $(document).ready(function(){
*/
$(document).ready(function(){
$("#barSelectLanguage").change(function(){
this.form.submit();
$("#barSelectLanguage").click(function(){
$("#barFormSelectLanguage").submit();
});
});

View File

@ -35,7 +35,7 @@ class common {
const TEMP_DIR = 'site/tmp/';
// Numéro de version
const ZWII_VERSION = '10.0.06.dev';
const ZWII_VERSION = '10.0.07.dev';
public static $actions = [];
public static $coreModuleIds = [
@ -64,7 +64,7 @@ class common {
'pt' => 'Portugais (pt)',
'sv' => 'Suédois (sv)',
'ro' => 'Roumain (ro)',
'cz' => 'Tchèque (cz)'
'cz' => 'Tchèque (cz)'
];
public static $dataStage = [
'config',
@ -146,8 +146,6 @@ class common {
self::GROUP_ADMIN => 'Administrateur'
];
public static $timezone;
public static $i18nBackEnd = 'fr';
public static $i18nFrontEnd = 'fr';
private $url = '';
private $user = [];
@ -183,8 +181,9 @@ class common {
}
}
// 1 Langue sélectionnée par l'utilisateur prioritaire
// Déterminer la langue du visiteur
// --------------------------------
// 1 Langue sélectionnée par l'utilisateur prioritaire
if (isset($_COOKIE['ZWII_USER_I18N'])) {
$i18nPOST = $_COOKIE['ZWII_USER_I18N'];
} else {
@ -192,22 +191,20 @@ class common {
}
// 2 Langue du navigateur
$i18nHTTP = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
// 3 Langue du backend
//$i18nBackEnd = $this->getData('config','i18n');
$i18nBackEnd = 'fr';
// Détermine la langue
common::$i18nFrontEnd = $i18nPOST === '' ? $i18nHTTP : $i18nPOST;
// !! Vérifier si l'anglais est bien installée sinon fr
if ($this->geti18n() !== 'fr') {
common::$i18nFrontEnd = key_exists(common::$i18nFrontEnd, self::$i18nList) ? common::$i18nFrontEnd : 'en';
}
// !! 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;
// Sauvegarder la sélection
//setcookie('ZWII_USER_I18N',common::$i18nFrontEnd,strtotime("+1 year"), helper::baseUrl(false, false));
$this->seti18N(common::$i18nFrontEnd);
$this->seti18N($i18nFrontEnd);
// Mise à jour des données core
$this->update();
// Utilisateur connecté
if($this->user === []) {
$this->user = $this->getData(['user', $this->getInput('ZWII_USER_ID')]);
@ -358,15 +355,35 @@ class common {
}
}
/**
* Récupère la langue sélectionnée
* @param aucun
* @return string code iso de la langue
*/
public function geti18n() {
// Choix de la langue
return (common::$i18nFrontEnd);
// Vérifier l'existence du fichier de langue
if (isset ($_COOKIE["ZWII_USER_I18N"]) &&
key_exists($_COOKIE["ZWII_USER_I18N"], $this->i18nInstalled())) {
return ($_COOKIE["ZWII_USER_I18N"]);
} else {
// La valeur du cookie n'est pas une version installée, remettre à fr
if (isset ($_COOKIE["ZWII_USER_I18N"])) {
helper::deleteCookie("ZWII_USER_I18N");
$this->seti18n();
}
return ('fr');
}
}
/**
* Stocke la langue sélectionnée
* @param @string langue sosu forem iso
* @return @bool réussite ou échec
*/
public function seti18n($lan = 'fr') {
// Sauvegarder la sélection
setcookie('ZWII_USER_I18N',$lan,strtotime("+1 year"), helper::baseUrl(false, false));
return (setcookie('ZWII_USER_I18N',$lan,strtotime("+1 year"), helper::baseUrl(false, false)));
}
@ -804,7 +821,7 @@ class common {
* @return array liste des pages installées sous la forme "fr" -> "Français"
* La fonction vérifie l'existence du dossier et des deux fichiers de configuration
*/
public function i18nList ($emptyLine = false) {
public function i18nInstalled ($emptyLine = false) {
$listLanguages = $emptyLine === true ? [''=>'Sélectionner'] : [];
$tempData = array_diff(scandir(self::DATA_DIR), array('..', '.'));
foreach ($tempData as $item) {
@ -2580,10 +2597,10 @@ class layout extends common {
// ne pas afficher la barre de langue pour une seule
// Sélection des langues installées
echo $this->geti18n();
if (sizeof($this->i18nList()) > 1) {
if (sizeof($this->i18nInstalled()) > 1) {
$leftItems .= '<li><form method="POST" action="' . helper::baseUrl(true) . 'i18n" id="barFormSelectLanguage">';
$leftItems .= '<select id="barSelectLanguage" name="i18nSelect" >';
foreach ($this->i18nList() as $itemKey => $item) {
foreach ($this->i18nInstalled() as $itemKey => $item) {
$leftItems .= '<option ';
$leftItems .= 'value="' . $itemKey .'"';
if ($this->geti18n() === $itemKey) {

View File

@ -19,7 +19,7 @@
<h4>Ajouter une localisation</h4>
<div class="row">
<div class="col5">
<?php echo template::select('i18nLanguageCopyFrom', $this->i18nList(true), [
<?php echo template::select('i18nLanguageCopyFrom', $this->i18nInstalled(true), [
'label' => 'Copier à partir ',
'help' => 'Pour démarrer sans copie des pages te des modules d\'une langue existante, ne rien sélectionner',
'selected' => -1
@ -43,7 +43,7 @@
<div class="block">
<h4>Supprimer une localisation</h4>
<div class="row">
<?php echo template::select('i18nLanguageRemove', $this->i18nList(true), [
<?php echo template::select('i18nLanguageRemove', $this->i18nInstalled(true), [
'label' => 'Localisations installées',
'help' => 'La suppression d\'une langue entraîne l\'effacement des pages et des modules',
'selected' => -1