XHTML.net

Technology talks by Loïc d’Anterroches

News, articles, PHP, scripts, XHTML/CSS, …

  1. Home
  2. PHP: Hypertext Preprocessor
  3. Pluf - Framework en PHP5

Mise en place des traductions dans Pluf

The 2008-05-07 at 10:24 by Loïc d'Anterroches filed under Pluf - Framework en PHP5.

Au départ, Pluf a hérité du module de traduction de Plume. Dans les tests unitaires de Pluf vous pourrez voir que j’ai étendu ce module pour supporter le cas des pluriels. C’était une extension simple et peu pratique pour supporter les langues avec des pluriels variés (genre le Russe).

Conclusion, j’ai presque fini de faire une implémentation propre de gettext en PHP. L’intérêt par rapport à l’utilisation de la version de gettext installée avec PHP est que vous n’avez pas besoin d’avoir la locale concernée installée sur votre système pour que cela fonctionne,

Le système utilise les catalogues au format gettext (fichiers .po) en utf-8, donc vous pouvez utiliser un éditeur comme Poedit pour faire les traductions. Le fichier .po est lu par Pluf et pour des raisons de performances peut être mis en cache dans un tableau PHP stocké dans un fichier. L’utilisation d’un simple tableau dans un fichier PHP pour la mise en cache permet la mise en cache par des systèmes comme XCache.

J’ai encore un peu de travail pour mettre en place le middleware qui va charger la bonne locale en fonction du choix de l’utilisateur et la mise en place de ce que les anglais nomment le "lazy loading", qui permet de charger la locale qu’au premier appel à une traduction. Vous pouvez vous attendre à voir arriver tout cela en ligne d’ici à la fin de cette semaine avec la doc qui va bien sur le site de Pluf.

Comments from readers

Bertrand Gorge said:

Est-ce que l'implémentation est liée à celle de François Planque, dans b2Evolution ?

(cf http://fplanque.net/Blog/devblog?cat=29 )

Loïc said:

L'implémentation est propre à Pluf, mais en pratique le concept est le même que celui de b2Evolution puisque les chaînes à traduire sont marquées comme à traduire en utilisant une fonction __() pour le singulier et _n() pour les cas pluriels.

Dans b2evolution, il semble que François utilise directement gettext _(). Je préfère ne pas utiliser directement gettext pour ne pas avoir l'obligation d'avoir la locale correspondante d'installée sur le système (c'est la grosse restriction de gettext).

J'ai mis en ligne la doc pour Pluf ici:
http://www.pluf.org/doc/internationalization.html

Voice your ideas

It is painless and I try not to kill electrons in the process.


Your email is required but will not be shared nor displayed.


Do you think your comment will force me to write even better stuff next time? If so, you simply rock.


Logo of Plume CMS