Accueil
Rechercher:
sur developpez.com sur les forums
Forums | Tutoriels | F.A.Q's | Participez | Hébergement | Contacts
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi Eclipse MS-Office SQL & SGBD Oracle  4D  Business Intelligence
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
FORUM PHP FAQ PHP COURS PHP SOURCES PHP LIVRES PHP SCRIPTS PHP OUTILS PHP COMPARATIFS PHP TV Zend Framework

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:
site.ini.append.php
<?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

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




Valid XHTML 1.1!Valid CSS!

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.

Responsable bénévole de la rubrique PHP : Guillaume Rossolini (Yogui) - Contacter par EMail :
Vos questions techniques : forum d'entraide PHP - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright © 2000-2008 www.developpez.com - Legal informations.