Internationaliser des applications CakePHP – Mariano Iglesias
Mariano Iglesias fait partie de la core team de CakePHP et est très investi dans la communauté hispanophone du framework. Durant cette conférence, il a présenté la marche à suivre afin d’internationaliser une application CakePHP et a effectué une petite démonstration concrète (qui malheureusement n’a pas très bien fonctionné !).
Dans un premier temps Mariano a détaillé quelques raisons pour lesquelles il est intéressant d’internationaliser son application en utilisant les mécanismes de CakePHP : toucher un plus large public, permet de travailler avec des traducteurs qui n’ont aucune compétence technique, si on y pense dès le début d’un projet la charge de travail supplémentaire est négligeable … et cela peut être très utile en cas de besoin d’internationalisation ultérieur. Il a aussi présenté quelques pratiques « douteuses » trouvées dans certaines applications comme le switch($lang) / case ou le tableau contenant toutes les traductions $termes['message'].
La suite logique a été la présentation des mécanismes fournis par CakePHP pour effectuer ce travail d’internationalisation, avec notamment :
- La méthode __() et son dérivé singulier / pluriel __n() – Je vous invite d’ailleurs à toutes les découvrir ici : http://api.cakephp.org/file/basics.php#function-__
- La constante de configuration « Config.language«
- Le shell i18n permettant d’extraire les chaines à traduire
- Le Translate Behavior
Je vous invite à parcourir les slides qui ont été mis à disposition afin d’avoir toutes les informations nécessaires sur ceux-ci ainsi que sur le processus d’internationalisation d’une application :
- Utiliser les méthodes gettext ( __x() ) dans votre application
- Extraire les chaînes à traduire grâce au shell « cake i18n » de CakePHP
- Créer un fichier de langue (*.po) depuis le catalogue généré (*.pot) précédemment
- L’éditer avec POEDIT pour traduire les chaînes
Les slides sont très bien faits et proposent des exemples permettant la compréhension de tout cela !
Quelques points à retenir pour faire les choses proprement et ne pas tomber dans certains pièges :
- Lorsque vous mettez en cache un élément dans une application internationalisée, pensez à rajouter la clé « ‘key’ => $lang » dans les paramètre de cache.
- Dans le cas d’une langue par défaut (par exemple le français pour http://pierre-martin.fr), faites attention aux duplicate content si jamais l’url « http://pierre-martin.fr/fr » affiche le même contenu … il faut penser à ne pas laisser le code de la langue par défaut dans l’url
Vous trouverez le code source de l’application d’exemple en téléchargement sur le site CakePHP.org
Pingback: CakePHP n’est pas mort !