====== 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|}}