Choix de la langue à l'installation

This commit is contained in:
Fred Tempez 2022-09-21 16:02:06 +02:00
parent a62135c172
commit c44a6c42df
9 changed files with 120 additions and 110 deletions

View File

@ -147,8 +147,54 @@ class common {
self::GROUP_MODERATOR => 'Éditeur', self::GROUP_MODERATOR => 'Éditeur',
self::GROUP_ADMIN => 'Administrateur' self::GROUP_ADMIN => 'Administrateur'
]; ];
// Langues proposées
public static $i18nList = [ //Langues de l'UI
// Langue de l'interface, tableau des dialogues
public static $dialog;
// Langue de l'interface sélectionnée
public static $i18nUI = 'fr_FR';
public static $languagesUI = [
'az_AZ' => 'Azərbaycan dili',
'bg_BG' => 'български език',
'ca' => 'Català, valencià',
'cs' => 'čeština, český jazyk',
'da' => 'Dansk',
'de' => 'Deutsch',
'el_GR' => 'ελληνικά',
'en_EN' => 'English',
'es' => 'Español',
'fa' => 'فارسی',
'fr_FR' => 'Français',
'he_IL' => 'Hebrew (Israel)',
'hr' => 'Hrvatski jezik',
'hu_HU' => 'Magyar',
'id' => 'Bahasa Indonesia',
'it' => 'Italiano',
'ja' => '日本',
'lt' => 'Lietuvių kalba',
'mn_MN' => 'монгол',
'nb_NO' => 'Norsk bokmål',
'nn_NO' => 'Norsk nynorsk',
'nl' => 'Nederlands, Vlaams',
'pl' => 'Język polski, polszczyzna',
'pt_BR' => 'Português(Brazil)',
'pt_PT' => 'Português',
'ro' => 'Română',
'ru' => 'Pусский язык',
'sk' => 'Slovenčina',
'sl' => 'Slovenski jezik',
'sv_SE' => 'Svenska',
'th_TH' => 'ไทย',
'tr_TR' => 'Türkçe',
'uk_UA' => 'Yкраїнська мова',
'vi' => 'Tiếng Việt',
'zh_CN' => '中文 (Zhōngwén), 汉语, 漢語',
// source: http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
];
// Langues de contenu
public static $languagesContent = [
'fr' => 'Français (fr)', 'fr' => 'Français (fr)',
'de' => 'Allemand (de)', 'de' => 'Allemand (de)',
'en' => 'Anglais (en)', 'en' => 'Anglais (en)',
@ -160,11 +206,6 @@ class common {
// Sélection de langue de l'interface // Sélection de langue de l'interface
public static $i18nContent = 'fr'; public static $i18nContent = 'fr';
// Langue de l'interface, tableau des dialogues
public static $dialog;
// Langue de l'interface sélectionnée
public static $i18n = 'fr_FR';
// Zone de temps // Zone de temps
public static $timezone; public static $timezone;
private $url = ''; private $url = '';
@ -256,6 +297,8 @@ class common {
] ]
]; ];
/** /**
* Constructeur commun * Constructeur commun
@ -270,16 +313,6 @@ class common {
$this->input['_COOKIE'] = $_COOKIE; $this->input['_COOKIE'] = $_COOKIE;
} }
// Déterminer la langue du contenu du site
if (isset($this->input['_COOKIE']['ZWII_I18N_SITE'])
) {
self::$i18nContent = $this->input['_COOKIE']['ZWII_I18N_SITE'];
setlocale (LC_TIME, self::$i18nContent . '_' . strtoupper (self::$i18nContent) );
} else {
self::$i18nContent = 'fr';
}
// Instanciation de la classe des entrées / sorties // Instanciation de la classe des entrées / sorties
// Récupère les descripteurs // Récupère les descripteurs
foreach ($this->dataFiles as $keys => $value) { foreach ($this->dataFiles as $keys => $value) {
@ -306,15 +339,28 @@ class common {
} }
// Langue de l'administration // Langue de l'administration
self::$i18n = $this->getData(['config', 'i18n', 'interface']); self::$i18nUI = $this->getData(['config', 'i18n', 'interface']);
// La langue par défaut du contenu est celle du site si le cookie est absent. // La langue par défaut du contenu est celle du site si le cookie est absent.
self::$i18n = (empty(self::$i18n) || is_null(self::$i18n)) ? self::$i18n = 'fr' : self::$i18n ; self::$i18nUI = (empty(self::$i18nUI) || is_null(self::$i18nUI)) ? self::$i18nUI = 'fr_FR' : self::$i18nUI ;
// Le fichier existe-t-il ? // Le fichier existe-t-il ?
if (!file_exists(self::I18N_DIR . self::$i18n . '.json')) { if (!file_exists(self::I18N_DIR . self::$i18nUI . '.json')) {
self::$i18n = 'fr_FR'; self::$i18nUI = 'fr_FR';
} }
// Déterminer la langue du contenu du site
if (isset($this->input['_COOKIE']['ZWII_I18N_SITE'])
) {
self::$i18nContent = $this->input['_COOKIE']['ZWII_I18N_SITE'];
setlocale (LC_TIME, self::$i18nContent . '_' . strtoupper (self::$i18nContent) );
} else {
self::$i18nContent = substr(self::$i18nUI, 0, 2);
}
// Utilisateur connecté // Utilisateur connecté
if($this->user === []) { if($this->user === []) {
$this->user = $this->getData(['user', $this->getInput('ZWII_USER_ID')]); $this->user = $this->getData(['user', $this->getInput('ZWII_USER_ID')]);
@ -386,7 +432,7 @@ class common {
} }
// Chargement des dialogues // Chargement des dialogues
self::$dialog = json_decode(file_get_contents(self::I18N_DIR . self::$i18n . '.json'), true); self::$dialog = json_decode(file_get_contents(self::I18N_DIR . self::$i18nUI . '.json'), true);
// Mise à jour des données core // Mise à jour des données core
if( $this->getData(['core', 'dataVersion']) !== intval(str_replace('.','',self::ZWII_VERSION))) include( 'core/include/update.inc.php'); if( $this->getData(['core', 'dataVersion']) !== intval(str_replace('.','',self::ZWII_VERSION))) include( 'core/include/update.inc.php');
@ -2160,7 +2206,7 @@ class common {
* Affiche le cadre avec les drapeaux sélectionnés * Affiche le cadre avec les drapeaux sélectionnés
*/ */
public function showi18n() { public function showi18n() {
foreach (self::$i18nList as $key => $value) { foreach (self::$languagesContent as $key => $value) {
if ($this->getData(['config', 'i18n', $key]) === 'site' if ($this->getData(['config', 'i18n', $key]) === 'site'
) { ) {
if ( if (

View File

@ -34,47 +34,9 @@ class install extends common {
public static $newVersion; public static $newVersion;
// Fichiers des langues de l'interface // Fichiers des langues de l'interface
public static $i18nFiles = []; public static $i18nFiles = [];
public static $languagesUI = [
'az_AZ' => 'Azərbaycan dili',
'bg_BG' => 'български език',
'ca' => 'Català, valencià',
'cs' => 'čeština, český jazyk',
'da' => 'Dansk',
'de' => 'Deutsch',
'el_GR' => 'ελληνικά',
'en_EN' => 'English',
'es' => 'Español',
'fa' => 'فارسی',
'fr_FR' => 'Français',
'he_IL' => 'Hebrew (Israel)',
'hr' => 'Hrvatski jezik',
'hu_HU' => 'Magyar',
'id' => 'Bahasa Indonesia',
'it' => 'Italiano',
'ja' => '日本',
'lt' => 'Lietuvių kalba',
'mn_MN' => 'монгол',
'nb_NO' => 'Norsk bokmål',
'nn_NO' => 'Norsk nynorsk',
'nl' => 'Nederlands, Vlaams',
'pl' => 'Język polski, polszczyzna',
'pt_BR' => 'Português(Brazil)',
'pt_PT' => 'Português',
'ro' => 'Română',
'ru' => 'Pусский язык',
'sk' => 'Slovenčina',
'sl' => 'Slovenski jezik',
'sv_SE' => 'Svenska',
'th_TH' => 'ไทย',
'tr_TR' => 'Türkçe',
'uk_UA' => 'Yкраїнська мова',
'vi' => 'Tiếng Việt',
'zh_CN' => '中文 (Zhōngwén), 汉语, 漢語',
// source: http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
];
/** /**
* Pré-installation - choix de la langue * Pré-installation - choix de la langue

View File

@ -0,0 +1,18 @@
/**
* This file is part of Zwii.
*
* For full copyright and license information, please see the LICENSE
* file that was distributed with this source code.
*
* @author Rémi Jean <remi.jean@outlook.com>
* @copyright Copyright (C) 2008-2018, Rémi Jean
* @author Frédéric Tempez <frederic.tempez@outlook.com>
* @copyright Copyright (C) 2018-2022, Frédéric Tempez
* @license GNU General Public License, version 3
* @link http://zwiicms.fr/
*/
/** NE PAS EFFACER
* admin.css
*/

View File

@ -0,0 +1,18 @@
/**
* This file is part of Zwii.
*
* For full copyright and license information, please see the LICENSE
* file that was distributed with this source code.
*
* @author Rémi Jean <remi.jean@outlook.com>
* @copyright Copyright (C) 2008-2018, Rémi Jean
* @author Frédéric Tempez <frederic.tempez@outlook.com>
* @copyright Copyright (C) 2018-2022, Frédéric Tempez
* @license GNU General Public License, version 3
* @link http://zwiicms.fr/
*/
/** NE PAS EFFACER
* admin.css
*/

View File

@ -408,7 +408,7 @@ class plugin extends common {
public function index() { public function index() {
// Tableau des langues rédigées // Tableau des langues rédigées
foreach (self::$i18nList as $key => $value) { foreach (self::$languagesContent as $key => $value) {
if ($this->getData(['config','i18n', $key]) === 'site' || if ($this->getData(['config','i18n', $key]) === 'site' ||
$key === 'fr') { $key === 'fr') {
$i18nSites[$key] = $value; $i18nSites[$key] = $value;

View File

@ -37,46 +37,6 @@ class translate extends common {
//UI //UI
// Fichiers des langues de l'interface // Fichiers des langues de l'interface
public static $i18nFiles = []; public static $i18nFiles = [];
// Langues de l'interface acceptées
public static $languagesUI = [
'az_AZ' => 'Azərbaycan dili',
'bg_BG' => 'български език',
'ca' => 'Català, valencià',
'cs' => 'čeština, český jazyk',
'da' => 'Dansk',
'de' => 'Deutsch',
'el_GR' => 'ελληνικά',
'en_EN' => 'English',
'es' => 'Español',
'fa' => 'فارسی',
'fr_FR' => 'Français',
'he_IL' => 'Hebrew (Israel)',
'hr' => 'Hrvatski jezik',
'hu_HU' => 'Magyar',
'id' => 'Bahasa Indonesia',
'it' => 'Italiano',
'ja' => '日本',
'lt' => 'Lietuvių kalba',
'mn_MN' => 'монгол',
'nb_NO' => 'Norsk bokmål',
'nn_NO' => 'Norsk nynorsk',
'nl' => 'Nederlands, Vlaams',
'pl' => 'Język polski, polszczyzna',
'pt_BR' => 'Português(Brazil)',
'pt_PT' => 'Português',
'ro' => 'Română',
'ru' => 'Pусский язык',
'sk' => 'Slovenčina',
'sl' => 'Slovenski jezik',
'sv_SE' => 'Svenska',
'th_TH' => 'ไทย',
'tr_TR' => 'Türkçe',
'uk_UA' => 'Yкраїнська мова',
'vi' => 'Tiếng Việt',
'zh_CN' => '中文 (Zhōngwén), 汉语, 漢語',
// source: http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
];
/** /**
* Configuration avancée des langues * Configuration avancée des langues
@ -105,7 +65,7 @@ class translate extends common {
// Enregistrer la langue // Enregistrer la langue
if ($success) { if ($success) {
$this->setData(['config', 'i18n', $toCreate, 'site' ]); $this->setData(['config', 'i18n', $toCreate, 'site' ]);
$notification = 'Données ' . self::$i18nList[$copyFrom] . ' copiées vers ' . self::$i18nList[$toCreate]; $notification = 'Données ' . self::$languagesContent[$copyFrom] . ' copiées vers ' . self::$languagesContent[$toCreate];
} else { } else {
$notification = "Quelque chose n\'a pas fonctionné, vérifiez les permissions."; $notification = "Quelque chose n\'a pas fonctionné, vérifiez les permissions.";
} }
@ -122,7 +82,7 @@ class translate extends common {
]); ]);
} }
// Tableau des langues installées // Tableau des langues installées
foreach (self::$i18nList as $key => $value) { foreach (self::$languagesContent as $key => $value) {
if ($this->getData(['config','i18n', $key]) === 'site') { if ($this->getData(['config','i18n', $key]) === 'site') {
self::$languagesTarget[$key] = $value; self::$languagesTarget[$key] = $value;
} }
@ -145,7 +105,7 @@ class translate extends common {
// Soumission du formulaire // Soumission du formulaire
if($this->isPost()) { if($this->isPost()) {
// Edition des langues // Edition des langues
foreach (self::$i18nList as $keyi18n => $value) { foreach (self::$languagesContent as $keyi18n => $value) {
if ($keyi18n === 'fr') continue; if ($keyi18n === 'fr') continue;
// Effacement d'une langue installée // Effacement d'une langue installée
@ -257,7 +217,7 @@ class translate extends common {
} }
// Modification des options de suppression de la langue installée. // Modification des options de suppression de la langue installée.
foreach (self::$i18nList as $key => $value) { foreach (self::$languagesContent as $key => $value) {
if ($this->getData(['config','i18n',$key]) === 'site') { if ($this->getData(['config','i18n',$key]) === 'site') {
self::$translateOptions [$key] = [ self::$translateOptions [$key] = [
'none' => 'Drapeau masqué', 'none' => 'Drapeau masqué',

View File

@ -46,7 +46,7 @@
<div class="col12"> <div class="col12">
<div class="block" id="flagsWrapper"> <div class="block" id="flagsWrapper">
<h4> <h4>
<?php echo template::topic('Interface'); ?> <?php echo template::topic('Langue de l\'administration'); ?>
</h4> </h4>
<div class="row"> <div class="row">
<div class="col4 offset4"> <div class="col4 offset4">

View File

@ -329,6 +329,9 @@
"Contenu du site": "", "Contenu du site": "",
"Traductions installées": "", "Traductions installées": "",
"Interface": "", "Interface": "",
"Langue de l'administration": "",
"Langues installées": "",
"Dans quelle langue utiliserez-vous Zwii ?": "",
"Paramétres": "", "Paramétres": "",
"Maintenance": "", "Maintenance": "",
"Scripts externes": "", "Scripts externes": "",

View File

@ -329,6 +329,9 @@
"Contenu du site": "", "Contenu du site": "",
"Traductions installées": "", "Traductions installées": "",
"Interface": "", "Interface": "",
"Langue de l'administration": "",
"Langues installées": "",
"Dans quelle langue utiliserez-vous Zwii ?": "",
"Paramétres": "", "Paramétres": "",
"Maintenance": "", "Maintenance": "",
"Scripts externes": "", "Scripts externes": "",