Table des matières

Méthode de traduction du Panel-GZW.

Le Panel-GZW a été développé de manière à ce que ce dernier puisse être traduit dans n'importe quelle langue.
La structure de la base de données est en UTF-8 ainsi que tout le code PHP ce qui permet une meilleure gestion des caractères accentués (entre autre ;-)).

Pré-requis

La liste des pré-requis n'est pas longue du tout, elle consiste à :

poEdit est un logiciel disponible sur Linux, Mac et Windows.

Si vous êtes sous Linux et plus particulièrement sur une distribution ”Debian Like”, l'installation est très simple.

# aptitude install poedit

Pendant le développement.

Tout au long du développement du panel, il a été (et sera toujours) nécessaire d'utiliser les fonctions de localisation développées par l'équipe CakePHP.

Les fonctions créées sont les suivantes :

Pour ma part j'ai décidé d'utilisé la fonction “_ _d()”. Elle offre la possibilité d'utiliser un ”domaine”.
Ce ”domaine” permet d'avoir plusieurs fois le même mot dans une page sans pour autant qu'il ait la même signification.

Pour de plus amples informations sur cette fonction je vous invite à jeter un oeil dans l'API de CakePHP.

Ces fonctions peuvent être utilisées dans les vues ainsi que dans les contrôleurs.

Une fois le développement terminé.

Maintenant que le développement de votre plugin par exemple est terminé, il est impératif de générer les fichiers sources “.mo” qui seront utilisés par poEdit.

Pour générer ces fichiers c'est très simple, encore une fois CakePHP possède un script qui va rechercher toutes les fonctions “_ _d()” présente dans le code pour ensuite les insérer dans un catalogue qui sera utilisable par poEdit.
Ce script est à utiliser via la console de CakePHP.

$ ./cake i18n
Résultat :

Welcome to CakePHP v1.2.4.8284 Console
---------------------------------------------------------------
App : app
Path: /var/www/dev/cake/Panel-GZW/app
---------------------------------------------------------------
I18n Shell
---------------------------------------------------------------
[E]xtract POT file from sources
[I]nitialize i18n database table
[H]elp
[Q]uit
What would you like to do? (E/I/H/Q) 
La lettre a taper ici est “E”.

Ici la console nous demande dans quel répertoire elle doit travailler (extraire les “_ _d()”).

What is the full path you would like to extract?
Example: /var/www/dev/cake/Panel-GZW/myapp
[Q]uit  
[/var/www/dev/cake/Panel-GZW/app] > 
Nous souhaitons traduire le plugin “crontab”. Nous insérons donc le chemin suivant :

/var/www/dev/cake/Panel-GZW/app/plugins/crontab

What is the full path you would like to output?
Example: /var/www/dev/cake/Panel-GZW/app/plugins/crontab/locale
[Q]uit  
[/var/www/dev/cake/Panel-GZW/app/plugins/crontab/locale] >

Ici la question est de savoir ou le catalogue sera généré, nous allons le générer dans le répertoire suivant :

/var/www/dev/cake/Panel-GZW/app/plugins/crontab/locale/fre

Il est indispensable de créer les répertoires suivants dans l'arborescence du plugin avant de lancer la commande d'extraction :

–> locale
–> locale/fre
–> locale/fre/LC_MESSAGES

fre” est égal à “french

Pour la traduction anglaise ça ressemblera à ceci :

–> locale
–> locale/eng
–> locale/eng/LC_MESSAGES

eng” est égal à “english

Extracting...
---------------------------------------------------------------
Path: /var/www/dev/cake/Panel-GZW/app/plugins/crontab
Output Directory: /var/www/dev/cake/Panel-GZW/app/plugins/crontab/locale/fre/
---------------------------------------------------------------
Would you like to merge all translations into one file? (y/n) 
[y] > 
Répondez “Y”.

What should we name this file?  
[default] > 
La console souhaite appeler le fichier généré “default”, cependant nous souhaitons appeler ce fichier “crontab”.

Processing /var/www/dev/cake/Panel-GZW/app/plugins/crontab/crontab_app_controller.php...
Processing /var/www/dev/cake/Panel-GZW/app/plugins/crontab/crontab_app_model.php...
Processing /var/www/dev/cake/Panel-GZW/app/plugins/crontab/controllers/crons_controller.php...
Processing /var/www/dev/cake/Panel-GZW/app/plugins/crontab/models/cron.php...
Processing /var/www/dev/cake/Panel-GZW/app/plugins/crontab/views/crons/add.ctp...
Processing /var/www/dev/cake/Panel-GZW/app/plugins/crontab/views/crons/admin_add.ctp...
Processing /var/www/dev/cake/Panel-GZW/app/plugins/crontab/views/crons/admin_edit.ctp...
Processing /var/www/dev/cake/Panel-GZW/app/plugins/crontab/views/crons/admin_index.ctp...
Processing /var/www/dev/cake/Panel-GZW/app/plugins/crontab/views/crons/edit.ctp...
Processing /var/www/dev/cake/Panel-GZW/app/plugins/crontab/views/crons/index.ctp...
Processing /var/www/dev/cake/Panel-GZW/app/plugins/crontab/views/elements/crons.ctp...

Voila, la console a généré notre catalogue.
Nous avons obtenu un nouveau fichier qui se nomme :

  1. crontab.pot

Commencer la traduction.

Après avoir exécuté poEdit, allez dans “Fichier” → “Nouveau catalogue depuis un fichier POT”. Notre fichier “crontab.pot” doit se trouver dans le répertoire “/var/www/dev/cake/Panel-GZW/app/plugins/crontab/locale/fre/”, ouvrez-le.

poEdit demande ou est-ce que l'on souhaite enregistrer le fichier de traduction, il doit être enregistré dans le répertoire “/var/www/dev/cake/Panel-GZW/app/plugins/crontab/locale/fre/LC_MESSAGES/” sous le nom de “crontab.po”.

Une fois enregistré, vous devriez avoir quelque chose similaire à ceci :

Pour débuter la traduction, cliquez sur l'une des lignes et traduisez cette dernière dans la langue souhaitée.