====== 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 [[http://fr.wikipedia.org/wiki/UTF-8|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 à :
* Parler anglais.
* Savoir utiliser un logiciel tel que poEdit (//ou du même genre//).
[[http://www.poedit.net/download.php|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 [[http://www.cakephp-fr.org/|CakePHP]].
Les fonctions créées sont les suivantes :
* __d('Crontab', 'Créer la nouvelle tâche planifiée.', true);
* __('Créer la nouvelle tâche planifiée.', true)
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 :
- 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**".
{{:poedit_save.png|}}
Une fois enregistré, vous devriez avoir quelque chose similaire à ceci :
{{:poedit.png|}}
Pour débuter la traduction, cliquez sur l'une des lignes et traduisez cette dernière dans la langue souhaitée.
{{:poedit_translate.png|}}