À 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