RSS
 

Cakefest #3 – Second jour de conférences

12 août

«»

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

Pensez à utiliser mon flux RSS pour vous tenir au courant des futurs articles ! Vous pouvez aussi me retrouver sur Twitter pour une actualité plus fréquente.

«»

 
3 Comments

Posted in En vrac

 

Tags: , , ,

  • http://www.gravisure.com/ Vanitom

    Bonsoir,

    Je viens de tester « siege ». C’est bien comme soft pour savoir où on en est.
    Car avant j’utilisais l’affichage réseau de FireBug et ce n’était pas très précis.
    Mais là c’est top, on peut tout paramètrer pour avoir une comparaison exact entre différente version.

    Par contre j’ai une question. Est’il possible de faire ces tests sur une page nécessitant une authentification ?

    Pour finir juste une petite remarque. As tu testé « siege » sur http://www.google.com/ . C’est impressionnant mais c’est Google.

    En tout cas merci pour ces articles intéressant.

  • http://www.pierre-martin.fr Pierre MARTIN

    Bonjour Vanitom,

    J’ai découvert siege lors de ce Cakefest, et ne l’ai utilisé que pour faire quelques tests et voir ce que celà donnait (d’ailleurs c’est vrai qu’on se rend bien compte des performances des grands sites omparés à d’autres plus modestes).

    Du coup je ne peux pas trop t’éclairer sur l’authentification … si ce n’est que leur site indique « Siege supports basic authentication, cookies, HTTP and HTTPS protocols » …

    Bonne continuation en tout cas pour tes tests de performance !
    Pierre

  • Pingback: CakePHP n’est pas mort !