Tutoriel eZ Publish: Traduction de textes statiques

Pour comprendre cet atelier, il est nécessaire d'être à l'aise avec l'administration d'eZ Publish et avoir quelques notions d'internationalisation.

Article lu   fois.

L'auteur

Site personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

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
Sélectionnez
<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
Sélectionnez
{"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
Sélectionnez

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:

site.ini.append.php
Sélectionnez
<?php /*

[RegionalSettings]
TranslationExtensions[]=mon-extension-de-traduction

*/ ?>

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
Sélectionnez

<!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

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

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 œuvre intellectuelle protégée par les droits d'auteur. 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'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.