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
).
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
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 :
__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.
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 i18nRé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
–> 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 :
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.