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_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)',
'de' => 'Allemand (de)',
'en' => 'Anglais (en)',
@ -160,11 +206,6 @@ class common {
// Sélection de langue de l'interface
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
public static $timezone;
private $url = '';
@ -256,6 +297,8 @@ class common {
]
];
/**
* Constructeur commun
@ -270,16 +313,6 @@ class common {
$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
// Récupère les descripteurs
foreach ($this->dataFiles as $keys => $value) {
@ -306,15 +339,28 @@ class common {
}
// 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.
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 ?
if (!file_exists(self::I18N_DIR . self::$i18n . '.json')) {
self::$i18n = 'fr_FR';
if (!file_exists(self::I18N_DIR . self::$i18nUI . '.json')) {
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é
if($this->user === []) {
$this->user = $this->getData(['user', $this->getInput('ZWII_USER_ID')]);
@ -386,7 +432,7 @@ class common {
}
// 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
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
*/
public function showi18n() {
foreach (self::$i18nList as $key => $value) {
foreach (self::$languagesContent as $key => $value) {
if ($this->getData(['config', 'i18n', $key]) === 'site'
) {
if (

View File

@ -34,47 +34,9 @@ class install extends common {
public static $newVersion;
// Fichiers des langues de l'interface
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
];
// Fichiers des langues de l'interface
public static $i18nFiles = [];
/**
* 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() {
// 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' ||
$key === 'fr') {
$i18nSites[$key] = $value;

View File

@ -37,46 +37,6 @@ class translate extends common {
//UI
// Fichiers des langues de l'interface
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
@ -105,7 +65,7 @@ class translate extends common {
// Enregistrer la langue
if ($success) {
$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 {
$notification = "Quelque chose n\'a pas fonctionné, vérifiez les permissions.";
}
@ -122,7 +82,7 @@ class translate extends common {
]);
}
// Tableau des langues installées
foreach (self::$i18nList as $key => $value) {
foreach (self::$languagesContent as $key => $value) {
if ($this->getData(['config','i18n', $key]) === 'site') {
self::$languagesTarget[$key] = $value;
}
@ -145,7 +105,7 @@ class translate extends common {
// Soumission du formulaire
if($this->isPost()) {
// Edition des langues
foreach (self::$i18nList as $keyi18n => $value) {
foreach (self::$languagesContent as $keyi18n => $value) {
if ($keyi18n === 'fr') continue;
// Effacement d'une langue installée
@ -257,7 +217,7 @@ class translate extends common {
}
// 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') {
self::$translateOptions [$key] = [
'none' => 'Drapeau masqué',

View File

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

View File

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

View File

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