Gestion des langues
This commit is contained in:
parent
342df04879
commit
01b9f8c103
@ -17,10 +17,77 @@ class translate extends common {
|
||||
|
||||
public static $actions = [
|
||||
/*'config' => self::GROUP_MODERATOR,*/
|
||||
'index' => self::GROUP_MODERATOR,
|
||||
'index' => self::GROUP_ADMIN,
|
||||
'copy' => self::GROUP_ADMIN,
|
||||
'language' => self::GROUP_VISITOR
|
||||
];
|
||||
|
||||
public static $translateOptions = [];
|
||||
|
||||
// Liste des langues installées
|
||||
public static $languagesInstalled = [];
|
||||
// Liste des langues cibles
|
||||
public static $languagesTarget = [];
|
||||
// Activation du bouton de copie
|
||||
public static $siteTranslate = true;
|
||||
|
||||
/**
|
||||
* Configuration avancée des langues
|
||||
*/
|
||||
public function copy() {
|
||||
|
||||
// Soumission du formulaire
|
||||
if ($this->isPost()) {
|
||||
// Initialisation
|
||||
$success = false;
|
||||
$copyFrom = $this->getInput('translateFormCopySource');
|
||||
$toCreate = $this->getInput('translateFormCopyTarget');
|
||||
if ($copyFrom !== $toCreate) {
|
||||
// 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', 'i18n', $toCreate, 'site' ]);
|
||||
$notification = 'Données ' . self::$i18nList[$copyFrom] . ' copiées vers ' . self::$i18nList[$toCreate];
|
||||
} else {
|
||||
$notification = "Quelque chose n\'a pas fonctionné, vérifiez les permissions.";
|
||||
}
|
||||
} else {
|
||||
$success = false;
|
||||
$notification = 'Les langues doivent être différentes.';
|
||||
}
|
||||
// Valeurs en sortie
|
||||
$this->addOutput([
|
||||
'notification' => $notification,
|
||||
'title' => 'Utilitaire de copie',
|
||||
'view' => 'index',
|
||||
'state' => $success
|
||||
]);
|
||||
}
|
||||
// Tableau des langues installées
|
||||
foreach (self::$i18nList as $key => $value) {
|
||||
if ($this->getData(['config','i18n', $key]) === 'site') {
|
||||
self::$languagesTarget[$key] = $value;
|
||||
}
|
||||
}
|
||||
// Langues cibles fr en plus
|
||||
self::$languagesInstalled = array_merge(['fr' => 'Français (fr)'],self::$languagesTarget);
|
||||
|
||||
// Valeurs en sortie
|
||||
$this->addOutput([
|
||||
'title' => 'Utilitaire de copie',
|
||||
'view' => 'copy'
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Configuration
|
||||
*/
|
||||
@ -28,19 +95,26 @@ class translate extends common {
|
||||
|
||||
// Soumission du formulaire
|
||||
if($this->isPost()) {
|
||||
// Edtion des langues
|
||||
// Désactivation du script Google
|
||||
if ($this->getInput('translateScriptGoogle', helper::FILTER_BOOLEAN) === false) {
|
||||
setrawcookie('googtrans', '/fr/fr', time() + 3600, helper::baseUrl(false,false));
|
||||
$_SESSION['googtrans'] = '/fr/fr';
|
||||
}
|
||||
$script = $this->getInput('translateScriptGoogle', helper::FILTER_BOOLEAN);
|
||||
// Edition des langues
|
||||
foreach (self::$i18nList as $keyi18n => $value) {
|
||||
if ($keyi18n === 'fr') {continue;}
|
||||
// Effacement d'une langue installée (dossier plus option désactivée précédemment)
|
||||
// Effacement d'une langue installée
|
||||
if ( is_dir( self::DATA_DIR . $keyi18n ) === true
|
||||
AND $this->getInput('translateSiteFlag' . strtoupper($keyi18n) , helper::FILTER_BOOLEAN) === false )
|
||||
AND $this->getInput('translate' . strtoupper($keyi18n)) === 'delete')
|
||||
{
|
||||
$this->removeDir( self::DATA_DIR . $keyi18n);
|
||||
}
|
||||
// Installation d'une langue
|
||||
if ( $this->getInput('translateSiteFlag' . strtoupper($keyi18n) , helper::FILTER_BOOLEAN) === true )
|
||||
if ( $this->getInput('translate' . strtoupper($keyi18n)) === 'site'
|
||||
AND is_dir(self::DATA_DIR . $keyi18n) === false )
|
||||
{
|
||||
// Créer le dossier
|
||||
// Créer les données absentes
|
||||
if (is_dir( self::DATA_DIR . $keyi18n ) === false ) {
|
||||
mkdir( self::DATA_DIR . $keyi18n);
|
||||
}
|
||||
@ -58,29 +132,27 @@ class translate extends common {
|
||||
$e->save();
|
||||
}
|
||||
}
|
||||
// Active le script si une langue est en trad auto
|
||||
if ($script === false
|
||||
AND $this->getInput('translate'. strtoupper($keyi18n)) === 'script') {
|
||||
$script = true;
|
||||
}
|
||||
}
|
||||
|
||||
// Enregistrement des données
|
||||
$this->setData(['config','i18n', [
|
||||
'scriptGoogle' => $this->getInput('translateScriptGoogle', helper::FILTER_BOOLEAN),
|
||||
'showCredits' => $this->getInput('translateCredits', helper::FILTER_BOOLEAN) ? $this->getInput('translateCredits', helper::FILTER_BOOLEAN) : false,
|
||||
'autoDetect' => $this->getInput('translateAutoDetect', helper::FILTER_BOOLEAN),
|
||||
'admin' => $this->getInput('translateAdmin', helper::FILTER_BOOLEAN),
|
||||
'scriptFR' => $this->getInput('translateScriptFlagFR', helper::FILTER_BOOLEAN),
|
||||
'scriptDE' => $this->getInput('translateScriptFlagDE', helper::FILTER_BOOLEAN),
|
||||
'scriptEN' => $this->getInput('translateScriptFlagEN', helper::FILTER_BOOLEAN),
|
||||
'scriptES' => $this->getInput('translateScriptFlagES', helper::FILTER_BOOLEAN),
|
||||
'scriptIT' => $this->getInput('translateScriptFlagIT', helper::FILTER_BOOLEAN),
|
||||
'scriptNL' => $this->getInput('translateScriptFlagNL', helper::FILTER_BOOLEAN),
|
||||
'scriptPT' => $this->getInput('translateScriptFlagPT', helper::FILTER_BOOLEAN),
|
||||
'site' => $this->getInput('translateSite', helper::FILTER_BOOLEAN),
|
||||
'siteFR' => $this->getInput('translateSiteFlagFR', helper::FILTER_BOOLEAN),
|
||||
'siteDE' => $this->getInput('translateSiteFlagDE', helper::FILTER_BOOLEAN),
|
||||
'siteEN' => $this->getInput('translateSiteFlagEN', helper::FILTER_BOOLEAN),
|
||||
'siteES' => $this->getInput('translateSiteFlagES', helper::FILTER_BOOLEAN),
|
||||
'siteIT' => $this->getInput('translateSiteFlagIT', helper::FILTER_BOOLEAN),
|
||||
'siteNL' => $this->getInput('translateSiteFlagNL', helper::FILTER_BOOLEAN),
|
||||
'sitePT' => $this->getInput('translateSiteFlagPT', helper::FILTER_BOOLEAN)
|
||||
'enabled' => $this->getData(['config', 'i18n', 'enabled']),
|
||||
'scriptGoogle' => $script,
|
||||
'showCredits' => $this->getInput('translateScriptGoogle', helper::FILTER_BOOLEAN) ? $this->getInput('translateCredits', helper::FILTER_BOOLEAN) : false,
|
||||
'autoDetect' => $this->getInput('translateScriptGoogle', helper::FILTER_BOOLEAN) ? $this->getInput('translateAutoDetect', helper::FILTER_BOOLEAN) : false,
|
||||
'admin' => $this->getInput('translateScriptGoogle', helper::FILTER_BOOLEAN) ? $this->getInput('translateAdmin', helper::FILTER_BOOLEAN) : false,
|
||||
'fr' => $this->getInput('translateFR'),
|
||||
'de' => $this->getInput('translateDE'),
|
||||
'en' => $this->getInput('translateEN'),
|
||||
'es' => $this->getInput('translateES'),
|
||||
'it' => $this->getInput('translateIT'),
|
||||
'nl' => $this->getInput('translateNL'),
|
||||
'pt' => $this->getInput('translatePT')
|
||||
|
||||
]]);
|
||||
// Valeurs en sortie
|
||||
$this->addOutput([
|
||||
@ -89,22 +161,54 @@ class translate extends common {
|
||||
'state' => true
|
||||
]);
|
||||
}
|
||||
// Modification des options de suppression de la langue installée.
|
||||
foreach (self::$i18nList as $key => $value) {
|
||||
if ($this->getData(['config','i18n',$key]) === 'site') {
|
||||
self::$translateOptions [$key] = [
|
||||
'none' => 'Drapeau masqué',
|
||||
'script' => 'Traduction automatique',
|
||||
'site' => 'Traduction rédigée',
|
||||
'delete' => 'Supprimer la traduction'
|
||||
];
|
||||
self::$siteTranslate = $key !== 'fr' ? false : true;
|
||||
} else {
|
||||
self::$translateOptions [$key] = [
|
||||
'none' => 'Drapeau masqué',
|
||||
'script' => 'Traduction automatique',
|
||||
'site' => 'Traduction rédigée'
|
||||
];
|
||||
}
|
||||
}
|
||||
// Valeurs en sortie
|
||||
$this->addOutput([
|
||||
'title' => 'Paramètres',
|
||||
'title' => 'Gestion des langues',
|
||||
'view' => 'index'
|
||||
]);
|
||||
}
|
||||
|
||||
/*
|
||||
* Traitement du changement de langues
|
||||
*/
|
||||
|
||||
/*
|
||||
* Traitement du changement de langue
|
||||
* Fonction utilisée par le noyau
|
||||
*/
|
||||
public function language() {
|
||||
// Transmettre le choix au noyau
|
||||
setcookie('ZWII_USER_I18N', $this->getUrl(2), time() + 3600, helper::baseUrl(false, false) , '', helper::isHttps(), true);
|
||||
// Valeurs en sortie sans post
|
||||
|
||||
// Activation du drapeau
|
||||
if ( $this->getInput('ZWII_I18N_' . strtoupper($this->getUrl(3))) !== $this->getUrl(2) ) {
|
||||
// Nettoyer et stocker le choix de l'utilisateur
|
||||
helper::deleteCookie('ZWII_I18N_SITE');
|
||||
helper::deleteCookie('ZWII_I18N_SCRIPT');
|
||||
// Sélectionner
|
||||
setcookie('ZWII_I18N_' . strtoupper($this->getUrl(3)) , $this->getUrl(2), time() + 3600, helper::baseUrl(false, false) , '', helper::isHttps(), true);
|
||||
// Désactivation du drapeau, langue FR par défaut
|
||||
} else {
|
||||
setcookie('ZWII_I18N_SITE' , 'fr', time() + 3600, helper::baseUrl(false, false) , '', helper::isHttps(), true);
|
||||
helper::deleteCookie('ZWII_I18N_SCRIPT');
|
||||
}
|
||||
|
||||
// Valeurs en sortie
|
||||
$this->addOutput([
|
||||
'redirect' => helper::baseUrl() . $this->getUrl(3)
|
||||
'redirect' => helper::baseUrl()
|
||||
]);
|
||||
}
|
||||
}
|
1
core/module/translate/view/copy/copy.css
Normal file
1
core/module/translate/view/copy/copy.css
Normal file
@ -0,0 +1 @@
|
||||
|
34
core/module/translate/view/copy/copy.php
Normal file
34
core/module/translate/view/copy/copy.php
Normal file
@ -0,0 +1,34 @@
|
||||
<?php echo template::formOpen('translateFormCopy'); ?>
|
||||
<div class="row">
|
||||
<div class="col2">
|
||||
<?php echo template::button('translateFormCopyBack', [
|
||||
'class' => 'buttonGrey',
|
||||
'href' => helper::baseUrl() . 'translate',
|
||||
'ico' => 'left',
|
||||
'value' => 'Retour'
|
||||
]); ?>
|
||||
</div>
|
||||
<div class="col2 offset8">
|
||||
<?php echo template::submit('translateFormCopySubmit'); ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col12">
|
||||
<div class="block">
|
||||
<h4>Copie de site (traductions rédigées)</h4>
|
||||
<div class="row">
|
||||
<div class="col6">
|
||||
<?php echo template::select('translateFormCopySource', $module::$languagesInstalled, [
|
||||
'label' => 'Pages et les modules de'
|
||||
]); ?>
|
||||
</div>
|
||||
<div class="col6">
|
||||
<?php echo template::select('translateFormCopyTarget', $module::$languagesTarget, [
|
||||
'label' => 'Vers'
|
||||
]); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php echo template::formClose(); ?>
|
@ -8,112 +8,116 @@
|
||||
'value' => 'Retour'
|
||||
]); ?>
|
||||
</div>
|
||||
<div class="col2 offset8">
|
||||
<div class="col3 offset5">
|
||||
<?php echo template::button('configAdvancedButton', [
|
||||
'href' => helper::baseUrl() . 'translate/copy',
|
||||
'value' => 'Utilitaire de copie',
|
||||
'ico' => 'cog-alt',
|
||||
'disabled' => $module::$siteTranslate
|
||||
]); ?>
|
||||
</div>
|
||||
<div class="col2">
|
||||
<?php echo template::submit('translateFormSubmit'); ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col12">
|
||||
<div class="block">
|
||||
<h4>Langues supportées</h4>
|
||||
<h4>Traduction automatique
|
||||
<span class="helpDisplayButton">
|
||||
<?php echo template::ico('help', 'left');?>
|
||||
</span>
|
||||
</h4>
|
||||
<div class="row">
|
||||
<div class="col6">
|
||||
<b>Traduction automatique :</b>
|
||||
<div class="col12">
|
||||
<?php echo template::checkbox('translateScriptFlagDE', true, 'Allemand', [
|
||||
'checked' => $this->getData(['config','i18n', 'scriptDE'])
|
||||
]); ?>
|
||||
</div>
|
||||
<div class="col12">
|
||||
<?php echo template::checkbox('translateScriptFlagEN', true, 'Anglais', [
|
||||
'checked' => $this->getData(['config','i18n', 'scriptEN'])
|
||||
<?php echo template::checkbox('translateScriptGoogle', true, 'Active le script de traduction automatique', [
|
||||
'checked' => $this->getData(['config','i18n', 'scriptGoogle']),
|
||||
'help' => 'Le script Google Translate assure la traduction automatique du site.'
|
||||
]); ?>
|
||||
</div>
|
||||
<div class="col12">
|
||||
<?php echo template::checkbox('translateScriptFlagES', true, 'Espagnol', [
|
||||
'checked' => $this->getData(['config','i18n', 'scriptES'])
|
||||
]); ?>
|
||||
</div>
|
||||
<div class="col12">
|
||||
<?php echo template::checkbox('translateScriptFlagIT', true, 'Italien', [
|
||||
'checked' => $this->getData(['config','i18n', 'scriptIT'])
|
||||
]); ?>
|
||||
</div>
|
||||
<div class="col12">
|
||||
<?php echo template::checkbox('translateScriptFlagNL', true, 'Néerlandais', [
|
||||
'checked' => $this->getData(['config','i18n', 'scriptNL'])
|
||||
]); ?>
|
||||
</div>
|
||||
<div class="col12">
|
||||
<?php echo template::checkbox('translateScriptFlagPT', true, 'Portugais', [
|
||||
'checked' => $this->getData(['config','i18n', 'scriptPT'])
|
||||
]); ?>
|
||||
</div>
|
||||
<div class="col12">
|
||||
<?php echo template::checkbox('translateAutoDetect', true, 'Détection automatique', [
|
||||
'checked' => $this->getData(['config','i18n', 'autoDetect']),
|
||||
'help' => 'Détecte la langue du navigateur.'
|
||||
]); ?>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="col6">
|
||||
<b>Traduction rédigée :</b>
|
||||
<div class="col12">
|
||||
<?php echo template::checkbox('translateSiteFlagEN', true, 'Anglais', [
|
||||
'checked' => $this->getData(['config', 'i18n', 'siteEN'])
|
||||
<?php echo template::checkbox('translateAutoDetect', true, 'Détection automatique de la langue du navigateur', [
|
||||
'checked' => $this->getData(['config','i18n', 'autoDetect']),
|
||||
'class' => 'translateGoogleScriptOption',
|
||||
'help' => 'Détecte la langue du navigateur, dans ce mode il n\'est pas nécessaire d\'afficher les drapeaux.'
|
||||
]); ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col6">
|
||||
<?php echo template::checkbox('translateCredits', true, 'Afficher les crédits du script Google', [
|
||||
'checked' => $this->getData(['config','i18n', 'showCredits']),
|
||||
'class' => 'translateGoogleScriptOption',
|
||||
'help' => 'Option recommandée pour le respect du droit d\'auteur'
|
||||
]); ?>
|
||||
</div>
|
||||
<div class="col6">
|
||||
<?php echo template::checkbox('translateAdmin', true, 'Traduction en mode connecté', [
|
||||
'checked' => $this->getData(['config','i18n', 'admin']),
|
||||
'class' => 'translateGoogleScriptOption',
|
||||
'help' => 'Traduit le site et l\'interface de ZwiiCMS quand un utilisateur est connecté'
|
||||
]); ?>
|
||||
</div>
|
||||
<div class="col12">
|
||||
<?php echo template::checkbox('translateSiteFlagDE', true, 'Allemand', [
|
||||
'checked' => $this->getData(['config', 'i18n', 'siteDE'])
|
||||
]); ?>
|
||||
</div>
|
||||
<div class="col12">
|
||||
<?php echo template::checkbox('translateSiteFlagES', true, 'Espagnol', [
|
||||
'checked' => $this->getData(['config', 'i18n', 'siteES'])
|
||||
]); ?>
|
||||
</div>
|
||||
<div class="col12">
|
||||
<?php echo template::checkbox('translateSiteFlagIT', true, 'Italien', [
|
||||
'checked' => $this->getData(['config', 'i18n', 'siteIT'])
|
||||
]); ?>
|
||||
</div>
|
||||
<div class="col12">
|
||||
<?php echo template::checkbox('translateSiteFlagNL', true, 'Néerlandais', [
|
||||
'checked' => $this->getData(['config', 'i18n', 'siteNL'])
|
||||
]); ?>
|
||||
</div>
|
||||
<div class="col12">
|
||||
<?php echo template::checkbox('translateSiteFlagPT', true, 'Portugais', [
|
||||
'checked' => $this->getData(['config', 'i18n', 'sitePT'])
|
||||
]); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col12">
|
||||
<div class="block">
|
||||
<h4>Paramètres de traduction automatique</h4>
|
||||
<div class="row">
|
||||
<div class="col4">
|
||||
<?php echo template::checkbox('translateScriptGoogle', true, 'Active le script de traduction automatique', [
|
||||
'checked' => $this->getData(['config','i18n', 'scriptGoogle'])
|
||||
]); ?>
|
||||
<div class="col12">
|
||||
<div class="block" id="flagsWrapper">
|
||||
<h4>Mode de traduction et affichage des drapeaux</h4>
|
||||
<div class="row">
|
||||
<div class="col4 offset4">
|
||||
<?php echo template::select('translateFR', ['none'=>'Drapeau masqué','site'=>'Drapeau affiché'], [
|
||||
'label' => 'Français',
|
||||
'selected' => $this->getData(['config', 'i18n' , 'fr'])
|
||||
]); ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col6">
|
||||
<div class="col8 offset2">
|
||||
<?php echo template::select('translateDE', $module::$translateOptions['de'], [
|
||||
'label' => 'Allemand',
|
||||
'class' => 'translateFlagSelect',
|
||||
'selected' => $this->getData(['config', 'i18n' , 'de'])
|
||||
]); ?>
|
||||
</div>
|
||||
<div class="col4">
|
||||
<?php echo template::checkbox('translateAdmin', true, 'Mode connexion', [
|
||||
'checked' => $this->getData(['config','i18n', 'admin']),
|
||||
'help' => 'Traduction automatique du site et de l\'interface du CMS'
|
||||
]); ?>
|
||||
<div class="col8 offset2">
|
||||
<?php echo template::select('translateEN', $module::$translateOptions['en'], [
|
||||
'label' => 'Anglais',
|
||||
'class' => 'translateFlagSelect',
|
||||
'selected' => $this->getData(['config', 'i18n' , 'en'])
|
||||
]); ?>
|
||||
</div>
|
||||
<div class="col4">
|
||||
<?php echo template::checkbox('translateCredits', true, 'Afficher les crédits du script Google', [
|
||||
'checked' => $this->getData(['config','i18n', 'showCredits']),
|
||||
'help' => 'Option vivement recommandée pour le respect du droit d\'auteur'
|
||||
<div class="col8 offset2">
|
||||
<?php echo template::select('translateES', $module::$translateOptions['es'], [
|
||||
'label' => 'Espagnol',
|
||||
'class' => 'translateFlagSelect',
|
||||
'selected' => $this->getData(['config', 'i18n' , 'es'])
|
||||
]); ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col6">
|
||||
<div class="col8 offset2">
|
||||
<?php echo template::select('translateIT', $module::$translateOptions['it'], [
|
||||
'label' => 'Italien',
|
||||
'class' => 'translateFlagSelect',
|
||||
'selected' => $this->getData(['config', 'i18n' , 'it'])
|
||||
]); ?>
|
||||
</div>
|
||||
<div class="col8 offset2">
|
||||
<?php echo template::select('translateNL', $module::$translateOptions['nl'], [
|
||||
'label' => 'Néerlandais',
|
||||
'class' => 'translateFlagSelect',
|
||||
'selected' => $this->getData(['config', 'i18n' , 'nl'])
|
||||
]); ?>
|
||||
</div>
|
||||
<div class="col8 offset2">
|
||||
<?php echo template::select('translatePT', $module::$translateOptions['pt'], [
|
||||
'label' => 'Portugais',
|
||||
'class' => 'translateFlagSelect',
|
||||
'selected' => $this->getData(['config', 'i18n' , 'pt'])
|
||||
]); ?>
|
||||
</div>
|
||||
</div>
|
||||
@ -121,4 +125,14 @@
|
||||
</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. La traduction automatique offre deux possibilités, la détection automatique de la langue du navigateur même celle-ci n'est pas
|
||||
matérialisée par un drapeau. Le clic sur un drapeau forcera la traduction dans cette langue, pour cela sélectionnez le drapeau puis l'option de "Traduction automatique".
|
||||
La traduction automatique est réalisée à partir du site en version française.</p>
|
||||
<p>Avec l'option "Traduction rédigée", une nouveau sité est généré, seule la page d'accueil est crée, il faut alors rédiger les pages dans la langue sélectionnée.
|
||||
Il est possible de copier les pages et les modules d'une langue vers une autre à l'aide de l'utilitaire de copie.
|
||||
Quand un drapeau est masqué, la traduction est effacée, pensez à sauvegarder.
|
||||
Afficher le drapeau français pour revenir à la traduction dans la langue originale.</p>
|
||||
</div>
|
||||
<?php echo template::formClose(); ?>
|
Loading…
Reference in New Issue
Block a user