août
2011
eZ Publish dispose d’un moteur i18n ou d’internationalisation.
1. Presentation
On peut l’utiliser dans les templates à l’aide de l’opérateur i18n() :
{'The results'|i18n('search')}
Dans le ficher translations/fre-FR/translation.ts, on peut lui indiquer les valeurs en français :
<TS>
<context>
<name>search</name>
<message>
<source>The results</source>
<translation>Les résultats</translation>
</message>
</context>
</TS>
2. Utiliser des sources en français
Dans le sens anglais > français, il n’y a pas de soucis.
Sauf qu’on est pas tous bilingue, donc ça peut être plus pertinent de prendre le français comme référence.
Le problème est que le moteur i18n ne va pas utiliser le fichier de traduction translations/eng-GB/translation.ts.
Il doit sûrement supposer que la langue de référence est forcément l’anglais.
La petite astuce est d’utiliser la langue eng-GB@euro.
Donc de mettre ses traducitons dans le fichier translations/eng-GB@euro/translation.ts.
3. Encodage
Un dernier problème, le moteur ne gère pas naturellement les caractères accentués en tant que source.
Alors que bizarrement, il n’y avait pas de problème d’encodage pour les traductions dans le sens anglais > français.
Pour que ce code-là fonctionne dans votre template :
Il vous faudra encoder les accents dans votre fichier de traduction translations/eng-GB@euro/translation.ts :
<TS>
<context>
<name>search</name>
<message>
<source>Les r&#xE9;sultats</source>
<translation>The results</translation>
</message>
</context>
</TS>
Dans ce fichier, é représente le caractère é.
E9 est la valeur numériques hexadécimal du caractère.
Pour connaître les valeurs hexadécimale, il faut utiliser un convertisseur de caractères.
Conclusion
Si tous les membres de votre équipe sont à l’aise avec l’anglais, il vaut mieux garder l’anglais en tant que langue de référence.
Vous garderez des fichiers de traductions plus lisible et maintenable.
En espérant que ça puisse vous aider,
Thomas.