À l’heure de la mondialisation, l’internationalisation s’impose comme un enjeu essentiel. Elle implique la gestion de nombreux détails susceptibles de devenir de vrais casse-tête : jeux de caractères, changement de langue, gestion des monnaies, synchronisation des horloges, etc. Prévenir plutôt que guérir, voilà pourquoi il est essentiel de penser en amont votre internationalisation.
Exercice 1
1) Créez le fichier /www/htdocs/sitezend_avance/application/config/traduction.tmx qui contiendra les traductions suivantes au format tmx :
Bonjour : Bonjour (fr), Buenos dias (es), Hello (en)
Exemple de traduction : Traduction example (en)
2) Dans la méthode indexAction() du contrôleur index, affichez le texte Bonjour traduit en anglais.
Correction de l'exercice 1
$ nano /www/htdocs/sitezend_avance/application/config/traduction.tmx
<?xml version="1.0" ?>
<!DOCTYPE tmx SYSTEM "tmx14.dtd">
<tmx version="1.4">
<header creationtoolversion="1.0.0"
datatype="winres"
segtype="sentence"
adminlang="fr-fr"
srclang="fr-fr"
o-tmf="abc"
creationtool="XYZTool" />
<body>
<tu tuid='Bonjour'>
<tuv xml:lang="fr">Bonjour
<tuv xml:lang="es">Buenos dias
<tuv xml:lang="en">Hello
</tu>
<tu tuid='Exemple de traduction'>
<tuv xml:lang="en">Traduction example
</tu>
</body>
</tmx>

On déclare notre fichier de traduction dans notre bootstrap en créant la fonction _initTrad() :
$ nano /www/htdocs/sitezend_avance/application/Bootstrap.php
protected function _initTrad () {
// Déclaration de l’objet translate
$translate = new Zend_Translate('tmx', APPLICATION_PATH.'/config/traduction.tmx', 'fr');
// Enregistrement explicite de la langue courante
$translate->setLocale('fr');
Zend_Registry::set('trad', $translate);
}

Retournons dans notre contrôleur index :
$ nano /www/htdocs/sitezend_avance/application/controllers/IndexController.php
Dans la méthode init() on récupère l'objet trad créé dans le bootstrap :
public function init() {
$this->translate = Zend_Registry::get('trad');
}
Et dans notre méthode indexAction() on affiche la traduction
public function indexAction() {
echo $this->translate->_('Bonjour');
}

On affiche notre site et on devrait obtenir le résultat suivant :

Il est vrai que cet exemple n'est pas le plus parlant, revenons à notre bootstrap pour la méthode _initTrad() que nous avons créé au dessus.
Et on change :
$translate->setLocale('fr');
pour :
$translate->setLocale('en');

Et on recharge notre page :

Notre chaîne est correctement traduite en anglais.
Aucun commentaire:
Enregistrer un commentaire