Jan.01

Apprendre Zend Framework 2 sous windows partie 9

Apprendre Zend Framework 2 sous windows partie 9

h) Traduction du module Contact

Dans cette dernière partie du cours, nous avons étudier comment Zend Framework2 gère la traduction avec le composant Zend I18n. Avant toute chose, il faut vérifier si l’extension i18n est installé dans PHP. Pour vérifier ça, vous devez exécuter en ligne de commande ( php –ri intl ), et vous devez avoir un résultat de genre :

On appelle le Translator, en utilisant le serviceManager, qui est déjà crée par défaut (‘MvcTranslator‘ : voir le fichier Zend\Mvc\Service\ServiceListenerFactory.php) . On édite le fichier de configuration ( module.config.php de notre module ) , et on ajoute les lignes suivantes :

Le Translator de ZF2 supporte 4 formats :

  • PHP arrays
  • Gettext
  • Tmx
  • Xliff

nous utiliserons ici Getext, et pour traduire notre module, nous avons besoin de générer des catalogues de traductions . les catalogues de traductions sont générés en scannant les sources à la recherche des fonctions translate(‘qqch‘), ou _(‘qqch‘)  pour en extraire les chaines à traduire . des fichiers générés auront l’extention .po et contiendrons les chaines de caractère à traduire. un exemple de contenu de ses fichiers ressemble à :

On doit déclarer une fonction translate($mot_a_traduire) dans le fichier index.php dans le dossier public :

Pour utiliser le serviceManager Translator  dans notre controller, on va ajouter un paramètre privé $translator, et une fonction translate($txt), vous devez éditer ContactCOntroller.php et copier les lignes suivantes   :

Vous allez me dire, puisque la fonction translate($mot) ne fait rien, comment Zend Framework2 traduit les labels crées dans La classe ContactForm !!!

les helpers comme ( formElementErrors, formLabel, formInput, formSelect ….), qu’on utilise dans les vues comme ( ajouter.phtml, modifier.phtml ), font appel au composant Translator de Zend, regardons par exemple le code PHP  de la fonction magique  __invoke() de Helper FormLabel fait appel au composant Trasnlator pour traduire les labels :

Pour que POedit puisse extraire tous les mots, et phrases, qu’on veut traduire, on doit faire appel a la fonction translate() .

ContactForm.php :

La vue index.phtml :

La vue ajouter.phtml :

La vue modifier.phtml :

 

h-1) Installation et configuration de POEDIT

On télécharge POedit et on l’installe.

On doit configurer l’analyseur de POedit pour notre application ,et pour faire ça,  il faut tout simplement suivre les images :

image -1- ( cliquer sur préferences )

poedit-preferences1

image -2- ( sélectionner PHP, et cliquer sur modifier )

poedit-preferences-analyseurs

image -3- ( Ajouter l’extension phtml, et modifier la commande de l’analyseur )

poedit-preferences-configuration-analyseurs

h-2)  Création d’un nouveau catalogue

Aprés avoir configurer l’analyseur, on doit scanner notre module ( le code php, et les templates phtml ) , pour récupérer les mots et les phrases à traduire. Ce qu’il faut faire maintenant, c’est de créer un nouveau catalogue, les étapes de la création sont expliqué avec les images qui suivent :

image -4- (Créer un nouveau catalogue )

poedit-new-catalogue1

image -5-  ( Ajouter les configurations selon l’image )

poedit-config-catalogue

image -6- ( ajouter le chemin vers l’application )

poedit-config-catalogue-sources

image -7- ( déclarer les noms des fonctions qu’on va utiliser pour récupérer les mots ou phrases qu’il faut traduire )

poedit-config-catalogue-keywords-sources

On clique sur Accepter, et on enregistre le fichier avec le nom ‘en_US.po’ dans le dossier ‘language‘ qu’on doit le créer à la racine de notre module ‘Contact’.

image -8-

save-po

 

POedit va extraire les mots, et les phrases qu’il faut traduire, on aura l’affichage selon les images suivants :

image -9-

extraire_mots

 

image -10-

creation_po

On clique sur chaque mot, et on le traduit :

image  -11-

poedit-translate

N’oublier pas de cliquer sur le bouton enregistrer, pour sauver votre travail.

Vous pouvez créer un nouveau catalogue pour chaque nouveau langue, ou enregistrer le 1er ( en_US.po ) sous un autre nom ( nl_BE.po ,  par exemple ) , pour moi, j’ai crée 3 autres langues ( nl_BE.po, ru_RU.po, en_US.po ) , à la fin j’ai language.

Si tout se passe bien, il suffit de changer la langue par défaut qu’on l’a déclaré dans le fichier ‘module.config.php’. Par exemple, on change ‘fr_BE’ par ‘en_US’ .

Le résultat final :

En français

form-fr

En anglais

form-en

en néerlandais

form-nl

 

A la prochaine pour une dernière partie de ce tutoriel.

 

Zend Framework 2
Share this Story:
  • facebook
  • twitter
  • gplus
khalid

About khalid

Leave a comment

Comment