Tutoriel eZ Publish: Traduction de textes statiques
Date de publication : 24.11.2007
Par
Alain Sahli (Voir tous ses articles) (Blog)
Pour comprendre cet atelier, il est nécessaire d'être à l'aise avec l'administration d'eZ Publish et avoir quelques notions d'internationalisation.
I. Introduction
II. Description
II-A. Ajout direct dans le fichier de traduction
II-B. Création d'une extension de traduction
III. Liens
I. Introduction
eZ Publish travaille avec deux type de traduction, statique et dynamique. Les traductions statiques c'est les textes que vous pouvez voir sur des
boutons ou des messages d'erreurs qui ne sont pas régulièrement changé d'où le nom "statique". Tandis que les traductions dynamiques c'est les textes
de contenu, donc les pages proprement dites qui sont modifiées par l'éditeur du site. Les textes dynamiques sont à la charge de l'éditeur et il peut
les modifier comme bon lui semble ! Cependant il en va autrement avec les textes statiques, ils sont stockées dans des fichiers de traduction portant
l'extension .ts, ces fichiers peuvent être édités avec l'outil Qt Linguist. Les textes statiques ne peuvent donc pas être modifier depuis l'interface
d'administration.
II. Description
Le but de cet atelier et d'expliquer deux manières permettant d'ajouter des traductions statiques à vos projets sous eZ Publish. La première méthode
est très simple, il s'agit d'éditer le fichier de traduction existant et d'ajouter les traductions manquantes. La deuxième méthode consiste à développer
une extension de traduction qui va s'occuper de traduire nos textes statiques, cette méthode permet d'éviter de créer un mélange avec les textes statiques
existants.
II-A. Ajout direct dans le fichier de traduction
Les fichiers de traduction de base se trouvent dans le dossier share/translations/ma-locale/translations.ts. Une méthode simple et rapide
consiste donc à éditer le fichier dans la langue souhaitée et ajouter quelques traductions dont nous avons besoin. Imaginons que nous voulons ajouter
le texte "Send form" en deux langues, français et allemand. Pour réaliser ceci éditer le fichier de traduction français se trouvant
ici: share/translations/fre-CH/translations.ts. Un fichier de traduction .ts est un bête fichier XML, vous pouvez donc l'ouvrir avec votre éditeur
de texte et ajouter les lignes suivantes (tout en respectant la structure XML existante):
| Contexte de traduction |
<context>
<name>exemple/formulaire</name>
<message>
<source>Send form</source>
<translation type="unfinished">Envoyer le formulaire</translation>
</message>
</context>
|
Analysons ce petit bout d'XML, la balise context permet de définir un groupe de traduction, on pourra charger un certain context
grâce au mot clé contenu dans la balise name. Ensuite c'est très facile on peut ajouter autant de balise message que l'on veut, il
faut juste spécifier la clé de traduction dans les balises source puis écrire la traduction dans les balises translation. Vous aurez
peut-être remarqué l'attribut type="unfinished" dans la balise translation il s'agit uniquement d'une balise utilisée par Qt Linguist.
Il est d'ailleurs utile de préciser qu'il est conseiller de créer un fichier de traduction vide, c'est-à-dire en laissant les balises translation
vide. Ensuite vous pourrez traduire tout vos fichiers à l'aide de Qt Linguist dans différentes langues mais ceci ne fait l'objet de cet atelier je
ne vais donc pas entrer plus en détail.
Maintenant il faut encore ajouter la même traduction dans le fichier de traduction allemand, pour cela il
suffit de l'éditer et ajouter le même code XML que dans le fichier de traduction français puis remplacer le texte situé dans les balises
translation par le même texte mais en allemand.
Une fois la nouvelle traduction ajoutée dans les deux fichiers il suffit d'ajouter le code ci-dessous dans la template voulue pour afficher le texte
statique dans la bonne langue.
| Affiche Send form dans la langue souhaitée |
{"Send form"|i18n("exemple/formulaire")}
|
Pour les personnes qui ne sont pas familiarisés avec le langage de template d'eZ Publish, la clé "Send form" est piper dans la fonction i18n
(internationalisation) qui va automatique voir dans le bon fichier de langue (grâce à la locale du site) à quel texte correspond cette clé
dans le "context" exemple/formulaire.
L'avantage de cette métode c'est que l'on peut rapidement et facilement ajouter un nouveau texte statique. Mais le principal désavantage c'est
que si vous faites un "upgrade" vos traductions vont disparaître ce qui n'est pas très pratiques, ou alors vous devez à chaque fois recopier
toutes vos traduction personnelles dans les nouveaux fichiers. De plus vos traductions personnelles sont mélangées avec celles du système.
II-B. Création d'une extension de traduction
Cette méthode permet d'avoir des fichiers de traduction séparés qui ne contiennent que nos traductions personnelles. C'est très facile de développer
cette extension. Tout d'abord créer l'arborescence suivante:
| arborescence de l'extension de traduction |
mon-extension-de-traduction
|--- settings
| |--- site.ini.append.php
|--- translation
| |--- fre-FR
|--- translation.ts
|--- ger-DE
|--- translation.ts
|--- eng-GB
|--- translation.ts
|--- untranslated
|--- translation.ts
|
Placer ensuite cette extension dans le dossier extension situé à la racine de eZ Publish. Authentifiez-vous dans l'administration de votre site
puis cliquer sur l'onglet "setup" ou "configuration" puis cliquer sur extension ensuite cocher votre nouvelle extension de traduction et cliquer sur ok.
Voilà votre extension a été ajoutée, cependant il faut encore éditer le fichier site.ini.append.php, ajouter ceci:
Maintenant il s'agit d'éditer le fichier translation.ts qui se trouve dans le dossier untranslated de votre extension, ajouter uniquement les
clés de traduction mais pas les traductions mêmes, ce fichier sera utilisé comme base pour les traductions dans d'autres langues. Ci-dessous un exemple
de fichier vide:
| Fichier de traduction vide |
<!DOCTYPE TS><TS>
<context>
<name>extension/mon-texte</name>
<message>
<source>Exemple 1</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Exemple 2</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>
|
Ensuite vous pouvez copier ce fichier dans tous les dossiers de langue (fr-FR, eng-GB, etc...) et les traduire. Pour afficher un texte statique
dans une template vous pouvez utiliser le même code qu'au-dessus en spécifiant le bon context (balises name) et le bon texte source
(balises source.
Cette méthode à l'avantage de bien séparer VOS traductions et celles du système, de plus lors d'upgrade vos fichiers de traduction ne seront pas
écrasés.
III. Liens


Les sources présentées sur cette page sont libres de droits,
et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©
2007 Alain Sahli. Aucune reproduction,
même partielle, ne peut être faite de ce site et de l'ensemble de son contenu :
textes, documents, images, etc sans l'autorisation expresse de l'auteur.
Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E
de dommages et intérêts.
Cette page est déposée à la
SACD.