Dans Wao, j'ai la problématique de traduction d'entités.
Les utilisateurs de Wao doivent pouvoir créer de nouvelles entités, et
donc ajouter les traductions. Dans Wao, j'ai choisi de faire comme suit :
- Création d'une entité Translation
- id : le topiaid de l'entité traduite
- locale : "fr", "en_GB" etc.
- text : la trad
- J'ai une interface TranslatableEntity (qui étend TopiaEntity)
- Sur l'entité traductible, j'ajoute l'interface. Ça ajoute une ptite
méthode pour obtenir le nom de l'entité dans la bonne langue
An moment de restaurer les entités traductibles, le service passe par
une méthode qui va charger toutes les traductions d'une entité donnée
dans l'entité elle-même (oui, toutes les traductions et pas seulement la
langue courante, car en contexte web, la traduction peut changer en
live, sans recharger les données en base).
J'ai pas la problématique, donc à voir si c'est adapté : si on veut
pouvoir traduire les champs d'une entité, faut rajouter un champ
"property" dans Translation.
Pour l'instant je développe le truc dans Wao, pour voir où ça mène mais
si l'approche s'avère judicieuse on pourra remonter ça dans Topia dans
quelques temps :
- en créant des stréréotypes « translatable » sur une entité ou sur un champ
- ce stéréoptype ajoute dans le Abstract de l'entité une map pour
l'entité ou une map pour chaque champ à traduire
- on peut s'appuyer sur hibernate pour remplir cette map dès que
l'entité est chargée depuis la base (en eager)
--
Brendan Le Ny <bleny(a)codelutin.com>
Code Lutin
Conseil & Développement Logiciel Libre
+33 (0)2 40 50 29 28
http://codelutin.com