forked from ZwiiCMS-Team/ZwiiCMS
i18n :
- écran de copie de contenu d'une langue vers uen autre - masquer et effacer une langue - nouveau système d'aide sous forme d'une popup générale : une par écran
This commit is contained in:
parent
7b286c7940
commit
adaea91dbb
@ -456,4 +456,12 @@ $(document).ready(function(){
|
|||||||
$(changeIcon).addClass('zwiico-menu');
|
$(changeIcon).addClass('zwiico-menu');
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Active le système d'aide interne
|
||||||
|
*/
|
||||||
|
$(".helpDisplayButton").on("click",function() {
|
||||||
|
$(".helpDisplayContent").slideToggle();
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
@ -1701,4 +1701,24 @@ th.col12 {
|
|||||||
}
|
}
|
||||||
#googTransLogo img {
|
#googTransLogo img {
|
||||||
width: 60%;
|
width: 60%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Système d'aide */
|
||||||
|
|
||||||
|
.helpDisplayContent {
|
||||||
|
display: none;
|
||||||
|
-webkit-box-shadow: 5px 5px 11px 0px #222222;
|
||||||
|
box-shadow: 5px 5px 11px 0px #222222;
|
||||||
|
border-radius: 5px;
|
||||||
|
padding: 2px 10px;
|
||||||
|
background-color:#333;
|
||||||
|
color: white;
|
||||||
|
position: fixed;
|
||||||
|
z-index: 30;
|
||||||
|
bottom: 5px;
|
||||||
|
margin:
|
||||||
|
}
|
||||||
|
|
||||||
|
.helpDisplayButton {
|
||||||
|
cursor: pointer;
|
||||||
}
|
}
|
@ -16,15 +16,69 @@ class translate extends common {
|
|||||||
|
|
||||||
public static $actions = [
|
public static $actions = [
|
||||||
/*'config' => self::GROUP_MODERATOR,*/
|
/*'config' => self::GROUP_MODERATOR,*/
|
||||||
'index' => self::GROUP_MODERATOR,
|
'index' => self::GROUP_ADMIN,
|
||||||
|
'advanced' => self::GROUP_ADMIN,
|
||||||
'language' => self::GROUP_VISITOR
|
'language' => self::GROUP_VISITOR
|
||||||
];
|
];
|
||||||
|
|
||||||
public static $typeTranslate = [
|
public static $translateOptions = [];
|
||||||
'none' => 'Drapeau masqué',
|
|
||||||
'script' => 'Traduction automatique',
|
// Liste des langues installées
|
||||||
'site' => 'Traduction rédigée'
|
public static $languagesInstalled = [];
|
||||||
];
|
// Liste des langues cibles
|
||||||
|
public static $languagesTarget = [];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configuration avancée des langues
|
||||||
|
*/
|
||||||
|
public function advanced() {
|
||||||
|
|
||||||
|
// Soumission du formulaire
|
||||||
|
if ($this->isPost()) {
|
||||||
|
// Initialisation
|
||||||
|
$success = false;
|
||||||
|
$copyFrom = $this->getInput('translateFormAdvancedSource');
|
||||||
|
$toCreate = $this->getInput('translateFormAdvancedTarget');
|
||||||
|
// Création du dossier
|
||||||
|
if (is_dir(self::DATA_DIR . $toCreate) === false ) { // Si le dossier est déjà créé
|
||||||
|
$success = mkdir (self::DATA_DIR . $toCreate);
|
||||||
|
} else {
|
||||||
|
$success = true;
|
||||||
|
}
|
||||||
|
// Copier les données par défaut avec gestion des erreurs
|
||||||
|
$success = (copy (self::DATA_DIR . $copyFrom . '/locale.json', self::DATA_DIR . $toCreate . '/locale.json') === true && $success === true) ? true : false;
|
||||||
|
$success = (copy (self::DATA_DIR . $copyFrom . '/module.json', self::DATA_DIR . $toCreate . '/module.json') === true && $success === true) ? true : false;
|
||||||
|
$success = (copy (self::DATA_DIR . $copyFrom . '/page.json', self::DATA_DIR . $toCreate . '/page.json') === true && $success === true) ? true : false;
|
||||||
|
// Enregistrer la langue
|
||||||
|
if ($success) {
|
||||||
|
$this->setData(['config', 'translate', $toCreate, 'site' ]);
|
||||||
|
$notification = 'Données ' . self::$i18nList[$copyFrom] . ' copiées vers ' . self::$i18nList[$toCreate];
|
||||||
|
} else {
|
||||||
|
$notification = "Quelque chose n\'a pas foncitionné, vérifiez les permissions.";
|
||||||
|
}
|
||||||
|
// Valeurs en sortie
|
||||||
|
$this->addOutput([
|
||||||
|
'notification' => $notification,
|
||||||
|
'title' => 'Gestion avancée',
|
||||||
|
'view' => 'index',
|
||||||
|
'state' => $success
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
// Tableau des langues installées
|
||||||
|
foreach (self::$i18nList as $key => $value) {
|
||||||
|
if ($this->getData(['config','translate',$key]) === 'site') {
|
||||||
|
self::$languagesInstalled[$key] = $value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Tableau des langues cibles
|
||||||
|
self::$languagesTarget = array_diff (self::$i18nList,self::$languagesInstalled);
|
||||||
|
|
||||||
|
// Valeurs en sortie
|
||||||
|
$this->addOutput([
|
||||||
|
'title' => 'Gestion avancée',
|
||||||
|
'view' => 'advanced'
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Configuration
|
* Configuration
|
||||||
@ -44,7 +98,7 @@ class translate extends common {
|
|||||||
if ($keyi18n === 'fr') {continue;}
|
if ($keyi18n === 'fr') {continue;}
|
||||||
// Effacement d'une langue installée
|
// Effacement d'une langue installée
|
||||||
if ( is_dir( self::DATA_DIR . $keyi18n ) === true
|
if ( is_dir( self::DATA_DIR . $keyi18n ) === true
|
||||||
AND $this->getInput('translate' . strtoupper($keyi18n)) === 'none')
|
AND $this->getInput('translate' . strtoupper($keyi18n)) === 'delete')
|
||||||
{
|
{
|
||||||
$this->removeDir( self::DATA_DIR . $keyi18n);
|
$this->removeDir( self::DATA_DIR . $keyi18n);
|
||||||
}
|
}
|
||||||
@ -97,6 +151,23 @@ class translate extends common {
|
|||||||
'state' => true
|
'state' => true
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
// Modification de option de suppression de la langue installée.
|
||||||
|
foreach (self::$i18nList as $key => $value) {
|
||||||
|
if ($this->getData(['config','translate',$key]) === 'site') {
|
||||||
|
self::$translateOptions [$key] = [
|
||||||
|
'none' => 'Drapeau masqué',
|
||||||
|
'script' => 'Traduction automatique',
|
||||||
|
'site' => 'Traduction rédigée',
|
||||||
|
'delete' => 'Supprimer la traduction'
|
||||||
|
];
|
||||||
|
} else {
|
||||||
|
self::$translateOptions [$key] = [
|
||||||
|
'none' => 'Drapeau masqué',
|
||||||
|
'script' => 'Traduction automatique',
|
||||||
|
'site' => 'Traduction rédigée'
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'title' => 'Gestion des langues',
|
'title' => 'Gestion des langues',
|
||||||
@ -104,9 +175,11 @@ class translate extends common {
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Traitement du changement de langues
|
/*
|
||||||
*/
|
* Traitement du changement de langue
|
||||||
|
* Fonction utilisée par le noyau
|
||||||
|
*/
|
||||||
public function language() {
|
public function language() {
|
||||||
// Transmettre le choix au noyau
|
// Transmettre le choix au noyau
|
||||||
if ($this->getUrl(3) === 'script') {
|
if ($this->getUrl(3) === 'script') {
|
||||||
|
20
core/module/translate/view/advanced/advanced.css
Normal file
20
core/module/translate/view/advanced/advanced.css
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
/**
|
||||||
|
* 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-2020, Frédéric Tempez
|
||||||
|
* @license GNU General Public License, version 3
|
||||||
|
* @link http://zwiicms.fr/
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/** @import url("site/data/admin.css"); */
|
||||||
|
|
||||||
|
/** NE PAS EFFACER
|
||||||
|
* admin.css
|
||||||
|
*/
|
34
core/module/translate/view/advanced/advanced.php
Normal file
34
core/module/translate/view/advanced/advanced.php
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
<?php echo template::formOpen('translateFormAdvanced'); ?>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col2">
|
||||||
|
<?php echo template::button('translateFormAdvancedBack', [
|
||||||
|
'class' => 'buttonGrey',
|
||||||
|
'href' => helper::baseUrl() . 'translate',
|
||||||
|
'ico' => 'left',
|
||||||
|
'value' => 'Retour'
|
||||||
|
]); ?>
|
||||||
|
</div>
|
||||||
|
<div class="col2 offset8">
|
||||||
|
<?php echo template::submit('translateFormAdvancedSubmit'); ?>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col12">
|
||||||
|
<div class="block">
|
||||||
|
<h4>Copie de contenu</h4>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col6">
|
||||||
|
<?php echo template::select('translateFormAdvancedSource', $module::$languagesInstalled, [
|
||||||
|
'label' => 'Copier les pages et les modules de'
|
||||||
|
]); ?>
|
||||||
|
</div>
|
||||||
|
<div class="col6">
|
||||||
|
<?php echo template::select('translateFormAdvancedTarget', $module::$languagesTarget, [
|
||||||
|
'label' => 'Vers'
|
||||||
|
]); ?>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<?php echo template::formClose(); ?>
|
@ -14,7 +14,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Active le script Google quand une langue est traduite automatiquement
|
* Active le script Google quand une langue est traduite automatiquement
|
||||||
*/
|
*/
|
||||||
|
@ -8,14 +8,25 @@
|
|||||||
'value' => 'Retour'
|
'value' => 'Retour'
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col2 offset8">
|
<div class="col2 offset6">
|
||||||
|
<?php echo template::button('configAdvancedButton', [
|
||||||
|
'href' => helper::baseUrl() . 'translate/advanced',
|
||||||
|
'value' => 'Avancée',
|
||||||
|
'ico' => 'cog-alt',
|
||||||
|
]); ?>
|
||||||
|
</div>
|
||||||
|
<div class="col2">
|
||||||
<?php echo template::submit('translateFormSubmit'); ?>
|
<?php echo template::submit('translateFormSubmit'); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block" id="flagsWrapper">
|
<div class="block" id="flagsWrapper">
|
||||||
<h4>Affichage des drapeaux et sélection du mode de traduction</h4>
|
<h4>Mode de traduction et affichage des drapeaux
|
||||||
|
<span class="helpDisplayButton">
|
||||||
|
<?php echo template::ico('help', 'left');?>
|
||||||
|
</span>
|
||||||
|
</h4>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col4 offset4">
|
<div class="col4 offset4">
|
||||||
<?php echo template::select('translateFR', ['none'=>'Drapeau masqué','site'=>'Drapeau affiché'], [
|
<?php echo template::select('translateFR', ['none'=>'Drapeau masqué','site'=>'Drapeau affiché'], [
|
||||||
@ -27,21 +38,21 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col6">
|
<div class="col6">
|
||||||
<div class="col8 offset2">
|
<div class="col8 offset2">
|
||||||
<?php echo template::select('translateDE', $module::$typeTranslate, [
|
<?php echo template::select('translateDE', $module::$translateOptions['de'], [
|
||||||
'label' => 'Allemand',
|
'label' => 'Allemand',
|
||||||
'class' => 'translateFlagSelect',
|
'class' => 'translateFlagSelect',
|
||||||
'selected' => $this->getData(['config', 'translate' , 'de'])
|
'selected' => $this->getData(['config', 'translate' , 'de'])
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col8 offset2">
|
<div class="col8 offset2">
|
||||||
<?php echo template::select('translateEN', $module::$typeTranslate, [
|
<?php echo template::select('translateEN', $module::$translateOptions['en'], [
|
||||||
'label' => 'Anglais',
|
'label' => 'Anglais',
|
||||||
'class' => 'translateFlagSelect',
|
'class' => 'translateFlagSelect',
|
||||||
'selected' => $this->getData(['config', 'translate' , 'en'])
|
'selected' => $this->getData(['config', 'translate' , 'en'])
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col8 offset2">
|
<div class="col8 offset2">
|
||||||
<?php echo template::select('translateES', $module::$typeTranslate, [
|
<?php echo template::select('translateES', $module::$translateOptions['es'], [
|
||||||
'label' => 'Espagnol',
|
'label' => 'Espagnol',
|
||||||
'class' => 'translateFlagSelect',
|
'class' => 'translateFlagSelect',
|
||||||
'selected' => $this->getData(['config', 'translate' , 'es'])
|
'selected' => $this->getData(['config', 'translate' , 'es'])
|
||||||
@ -50,21 +61,21 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col6">
|
<div class="col6">
|
||||||
<div class="col8 offset2">
|
<div class="col8 offset2">
|
||||||
<?php echo template::select('translateIT', $module::$typeTranslate, [
|
<?php echo template::select('translateIT', $module::$translateOptions['it'], [
|
||||||
'label' => 'Italien',
|
'label' => 'Italien',
|
||||||
'class' => 'translateFlagSelect',
|
'class' => 'translateFlagSelect',
|
||||||
'selected' => $this->getData(['config', 'translate' , 'it'])
|
'selected' => $this->getData(['config', 'translate' , 'it'])
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col8 offset2">
|
<div class="col8 offset2">
|
||||||
<?php echo template::select('translateNL', $module::$typeTranslate, [
|
<?php echo template::select('translateNL', $module::$translateOptions['nl'], [
|
||||||
'label' => 'Néerlandais',
|
'label' => 'Néerlandais',
|
||||||
'class' => 'translateFlagSelect',
|
'class' => 'translateFlagSelect',
|
||||||
'selected' => $this->getData(['config', 'translate' , 'nl'])
|
'selected' => $this->getData(['config', 'translate' , 'nl'])
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col8 offset2">
|
<div class="col8 offset2">
|
||||||
<?php echo template::select('translatePT', $module::$typeTranslate, [
|
<?php echo template::select('translatePT', $module::$translateOptions['pt'], [
|
||||||
'label' => 'Portugais',
|
'label' => 'Portugais',
|
||||||
'class' => 'translateFlagSelect',
|
'class' => 'translateFlagSelect',
|
||||||
'selected' => $this->getData(['config', 'translate' , 'pt'])
|
'selected' => $this->getData(['config', 'translate' , 'pt'])
|
||||||
@ -113,4 +124,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col10 helpDisplayContent">
|
||||||
|
<p>Vous avez le choix entre une traduction automatique réalisée avec le script Google Traduction ou une traduction rédigée.
|
||||||
|
Si vous sélectionnez la traduction rédigée, seule la page d'accueil est générée, à vous de rédiger le site dans la langue sélectionnée.
|
||||||
|
Il est possible de copier les pages et les modules d'une langue vers une autre en cliquant sur le bouton de gestion avancée.</p>
|
||||||
|
<p>Une traduction peut être cachée en masquant le drapeau, la suppression d'une traduction rédigée est définitive, pensez à sauvegarder.
|
||||||
|
Afficher le drapeau fraçais afin de revenir à la langue d'origine du site.</p>
|
||||||
|
</div>
|
||||||
<?php echo template::formClose(); ?>
|
<?php echo template::formClose(); ?>
|
Loading…
Reference in New Issue
Block a user