| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312 |
- <!-- EN-Revision: 13904 -->
- <sect1 id="zend.translate.adapter">
- <title>Adaptateurs pour Zend_Translate</title>
- <para><classname>Zend_Translate</classname> peut manipuler différents adaptateurs pour la traduction. Chaque adaptateur a ses
- propres avantages et inconvénients. Ci-dessous vous trouverez la liste complète de tous les adaptateurs supportés
- pour la traduction des fichiers sources.</para>
- <table id="zend.translate.adapter.table">
- <title>Liste des adaptateurs pour Zend_Translate</title>
- <tgroup cols="3">
- <thead>
- <row>
- <entry>Adaptateur</entry>
- <entry>Description</entry>
- <entry>Utilisation</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>Tableau (array)</entry>
- <entry>Utilise les tableaux PHP</entry>
- <entry>Petites pages ; l'utilisation la plus simple ; seulement pour les programmeurs</entry>
- </row>
- <row>
- <entry>Csv</entry>
- <entry>Utilise les fichiers à séparation par virgule (*.csv/*.txt)</entry>
- <entry>Format simple de fichier texte ; rapide ; problèmes possibles avec les caractères
- Unicode</entry>
- </row>
- <row>
- <entry>Gettext</entry>
- <entry>Utilise les fichiers binaires gettext (*.mo)</entry>
- <entry>Norme GNU pour Linux ; thread-safe ; besoin d'outils pour la traduction</entry>
- </row>
- <row>
- <entry>Ini</entry>
- <entry>Utilise de simples fichiers ini (*.ini)</entry>
- <entry>Format simple de fichier texte ; rapide ; problèmes possibles avec les caractères
- Unicode</entry>
- </row>
- <row>
- <entry>Tbx</entry>
- <entry>Utilise les fichiers d'échange termbase (*.tbx/*.XML)</entry>
- <entry>Standard industriel pour des chaînes partagées entre les applications ; format XML</entry>
- </row>
- <row>
- <entry>Tmx</entry>
- <entry>Utilise les fichiers tmx (*.tmx/*.XML)</entry>
- <entry>Industriellement compatible avec la traduction partagée d'application ; format XML ; lisible
- par l'homme</entry>
- </row>
- <row>
- <entry>Qt</entry>
- <entry>Utilise les fichiers qt linguist (*.ts)</entry>
- <entry>Framework pour les applications mutualisées ; format XML ; lisible par l'homme</entry>
- </row>
- <row>
- <entry>Xliff</entry>
- <entry>Utilise les fichiers xliff (*.xliff/*.XML)</entry>
- <entry>Un format plus simple que TMX mais lié à lui ; format XML ; lisible par l'homme</entry>
- </row>
- <row>
- <entry>XmlTm</entry>
- <entry>Use xmltm (*.XML) files</entry>
- <entry>Standard industriel pour la traduction de type XML ; format XML ; lisible par l'homme</entry>
- </row>
- <row>
- <entry>Autres</entry>
- <entry>*.sql</entry>
- <entry>Différents adaptateurs pourront être implémentés dans l'avenir.</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- <sect2 id="zend.translate.adapter.decision">
- <title>Comment décider quel adaptateur de traduction utiliser ?</title>
- <para>Vous devrez décider quel adaptateur vous voulez utiliser avec <classname>Zend_Translate</classname>. Fréquemment,
- des critères externes tels qu'une condition du projet ou une exigence du client détermine ceci pour vous, mais
- si vous êtes en position de le faire vous-même, les conseils suivants peuvent simplifier votre décision.</para>
- <note>
- <para>En choisissant votre adaptateur vous devriez également prendre en compte l'encodage utilisé. Même si
- Zend Framework déclare UTF-8 comme encodage par défaut, il vous sera parfois nécessaire d'utiliser un
- autre encodage. Zend_Translate ne changera pas l'encodage défini dans votre fichier source ce qui veut dire
- que si votre source Gettext est construite en ISO-8859-1, il retournera les chaînes dans cet encodage sans
- les convertir. Il existe une seule restriction :</para>
- <para>Quand vous utilisez des sources basées sur le format XML comme TMX ou XLIFF vous devez définir
- l'encodage dans l'en-tête des fichiers XML, car tout fichier XML sans définition d'encodage sera traité par
- défaut en UTF-8 par un analyseur XML. Vous devez aussi prendre en compte que les encodages des fichiers XML
- sont limités aux encodages supportés par PHP, c'est-à-dire UTF-8, ISO-8859-1 and US-ASCII.</para>
- </note>
- <sect3 id="zend.translate.adapter.array">
- <title>Zend_Translate_Adapter_Array</title>
- <para>L'adaptateur de type tableau est l'adaptateur qui est le plus simple à utiliser pour les programmeurs.
- Mais quand vous avez de nombreuses chaînes de traduction ou beaucoup de langues vous devriez penser à un
- autre adaptateur. Par exemple, si vous avez 5000 chaînes de traduction, l'adaptateur tableau n'est
- probablement pas le choix le plus approprié pour vous.</para>
- <para>Vous devriez seulement utiliser cet adaptateur pour de petits sites avec quelques langues, et si vous
- (ou votre équipe de programmeur) créez les traductions vous-même.</para>
- </sect3>
- <sect3 id="zend.translate.adapter.csv">
- <title>Zend_Translate_Adapter_Csv</title>
- <para>L'adaptateur Csv est l'adaptateur qui est le plus simple à utiliser pour les clients. Les fichiers CSV
- sont lisibles par les éditeurs de texte standard, mais souvent les éditeurs de texte ne supportent pas les
- jeux de caractères utf8.</para>
- <para>Vous devriez utiliser cet adaptateur seulement si votre client veut faire les traductions
- lui-même.</para>
- <note>
- <para>Prenez garde que l'adaptateur Csv a des problèmes quand vos fichiers Csv ont un encodage différent
- que celui de votre environnement. Ceci est du à un bug de PHP lui-même qui ne sera pas corrigé avant la
- PHP 6.0 (http://bugs.php.net/bug.php?id=38471). Vous devez donc faire attention que l'adaptateur Csv ne
- gère pas la locale à cause d'une restrictions PHP.</para>
- </note>
- </sect3>
- <sect3 id="zend.translate.adapter.gettext">
- <title>Zend_Translate_Adapter_Gettext</title>
- <para>L'adaptateur Gettext est l'adaptateur qui est utilisé le plus souvent. Gettext est un format de source
- de traduction qui a été présenté par GNU, et est maintenant employé dans le monde entier. Il n'est pas
- lisible pour l'homme, mais il y a plusieurs outils gratuiciels (par exemple, <ulink
- url="http://sourceforge.net/projects/poedit/">POEdit</ulink>), qui sont très utiles. L'adaptateur
- <classname>Zend_Translate_Gettext</classname> n'est pas implémenté en utilisant l'extension gettext de PHP. Vous
- pouvez utiliser l'adaptateur Gettext même si vous n'avez pas installer l'extension gettext de PHP. En outre
- l'adaptateur est "thread-safe" alors que l'extension gettext de PHP ne l'est pas actuellement.</para>
- <para>La plupart des personnes utiliseront cet adaptateur. Avec les outils disponibles, la traduction
- professionnelle est très simple. Mais les données de gettext sont stockées dans un format compréhensible par
- une machine, qui n'est pas lisible sans outils.</para>
- </sect3>
- <sect3 id="zend.translate.adapter.ini">
- <title>Zend_Translate_Adapter_Ini</title>
- <para>L'adaptateur Ini est un adaptateur qui peut être directement utiliser par les clients. Les fichiers
- INI sont lisibles par les éditeurs de texte standard, mais souvent les éditeurs de texte ne supportent pas
- les jeux de caractères utf8.</para>
- <para>Vous devriez utiliser cet adaptateur seulement si votre client veut faire les traductions lui-même.
- N'utilisez pas cet adaptateur comme source de traduction générique.</para>
- </sect3>
- <sect3 id="zend.translate.adapter.tbx">
- <title>Zend_Translate_Adapter_Tbx</title>
- <para>L'adaptateur Tbx est un adaptateur qui sera utilisé par les clients qui utilisent déjà le format TBX
- pour leur système de traduction interne. Tbx n'est pas un format de traduction standard, mais plus une
- collection de chaînes de caractère sources déjà traduites et pré-traduites. Quand vous utilisez cet
- adaptateur vous devez être sûrs que toute votre chaîne de caractère source nécessaire est traduite. TBX est
- un fichier basé sur le format XML et un format complètement nouveau. XML des fichiers sont lisibles par
- l'homme, mais l'analyse syntaxique n'est pas aussi rapide qu'avec des fichiers gettext.</para>
- <para>Cet adaptateur est parfait pour les sociétés dont les fichiers source pré-traduits existent déjà. Les
- fichiers sont lisibles par l'homme et sont indépendants de système.</para>
- </sect3>
- <sect3 id="zend.translate.adapter.tmx">
- <title>Zend_Translate_Adapter_Tmx</title>
- <para>L'adaptateur Tmx est l'adaptateur qui sera employé par la plupart des clients qui ont des systèmes
- multiples qui emploient la même source de traduction, ou quand la source de traduction doit être
- indépendante du système. TMX est un format basé sur le format XML, qui est annoncé pour être le prochain
- standard industriel. Les fichiers de XML sont lisibles par l'homme, mais l'analyse n'est pas aussi rapide
- qu'avec des fichiers gettext.</para>
- <para>La plupart des moyennes à grandes entreprises utilisent cet adaptateur. Les fichiers sont lisibles par
- l'homme et sont indépendants du système.</para>
- </sect3>
- <sect3 id="zend.translate.adapter.qt">
- <title>Zend_Translate_Adapter_Qt</title>
- <para>L'adaptateur Qt est destiné à tous les clients qui ont des fichiers TS faits par QtLinguist comme
- source de traduction. QT est un fichier basé sur le format XML. Les fichiers XML sont humainement lisible,
- mais l'analyse syntaxique n'est pas si rapide qu'avec des fichiers gettext.</para>
- <para>Plusieurs grands acteurs ont construit leur logiciel sur le framework QT. Les fichiers sont lisibles
- par l'homme et indépendants du système.</para>
- </sect3>
- <sect3 id="zend.translate.adapter.xliff">
- <title>Zend_Translate_Adapter_Xliff</title>
- <para>L'adaptateur Xliff est l'adaptateur qui sera employé par la plupart des clients qui veulent avoir des
- fichiers XML mais n'ont pas d'outils pour TMX. XLIFF est basé sur le format XML et est lié à TMX mais est
- plus simple car il ne supporte pas toutes ses possibilités. Les fichiers XML sont lisibles par l'homme, mais
- l'analyse n'est pas aussi rapide qu'avec des fichiers gettext.</para>
- <para>La plupart des moyennes entreprises utilisent cet adaptateur. Les fichiers sont lisibles par l'homme
- et sont indépendants du système.</para>
- </sect3>
- <sect3 id="zend.translate.adapter.xmltm">
- <title>Zend_Translate_Adapter_XmlTm</title>
- <para>L'adaptateur XmlTm est l'adaptateur qui sera utilisé par les clients qui font leur mise en page
- eux-mêmes. XmlTm est un format qui permet à la source HTML complète d'être incluse dans la source de
- traduction, donc la traduction est couplée avec la mise en page. XmlTm est un fichier basé sur le format
- XML, qui est proche de XLIFF, mais qui n'est pas aussi simple à lire.</para>
- <para>Cet adaptateur devrait être seulement utilisé quand des fichiers source existent déjà. Les fichiers
- sont lisibles par l'homme et sont indépendants du système.</para>
- </sect3>
- </sect2>
- <sect2 id="zend.translate.adapter.selfwritten">
- <title>Intégrer ses propres adaptateurs</title>
- <para><classname>Zend_Translate</classname> vous permet d'intégrer et d'utiliser vos propres classes d'adaptateurs. Elles
- peuvent être utilisées commes les classes standards qui sont déjà incluses dans
- <classname>Zend_Translate</classname>.</para>
- <para>Toute classe d'adaptateur que vous voulez utiliser avec <classname>Zend_Translate</classname> doit être une
- sous-classe de <classname>Zend_Translate_Adapter</classname>. <classname>Zend_Translate_Adapter</classname> est une classe abstraite
- qui définit déjà tout ce qui est nécessaire pour la traduction. Ce qui doit être fait par vous, est la
- définition du lecteur des données traduites.</para>
- <para>L'usage du préfixe "Zend" devrait être limité à Zend Framework. Si vous étendez
- <classname>Zend_Translate</classname> avec votre propre adaptateur, vous devriez le nommer
- "MonEntreprise_Translate_Adapter_MonFormat". Le code suivant montre un exemple de la manière dont une classe
- d'adaptateur personnalisée peut être implémentée :</para>
- <programlisting role="php"><![CDATA[
- try {
- $translate = new Zend_Translate(
- 'MonEntreprise_Translate_Adapter_MonFormat',
- '/chemin/vers/translate.xx',
- 'fr',
- array('monoption' => 'mavaleur'));
- } catch (Exception $e) {
- // Fichier non trouvé, pas de classe d'adaptateur...
- // Echec de l'application
- }
- ]]></programlisting>
- </sect2>
- <sect2 id="zend.translate.adapter.caching">
- <title>Améliorer les performances de tous les adaptateurs</title>
- <para><classname>Zend_Translate</classname> vous permet d'utiliser en interne <classname>Zend_Cache</classname> pour accélérer le
- chargement des sources de traduction. Cela devient très pratique si vous utilisez beaucoup de sources de
- traduction ou des formats source vastes comme des fichiers au format XML.</para>
- <para>Pour utiliser le cache, vous devez juste fournir un objet de cache à la méthode
- <classname>Zend_Translate::setCache()</classname>. Elle prend une instance de <classname>Zend_Cache</classname> comme seul
- paramètre. En outre si vous utilisez n'importe quel adaptateur direct, vous pouvez employer la méthode
- <code>setCache()</code>. Par commodité, il existe des méthodes statiques <code>getCache()</code>,
- <code>hasCache()</code>, <code>clearCache()</code> et <code>removeCache()</code>.</para>
- <programlisting role="php"><![CDATA[
- $cache = Zend_Cache::factory('Core',
- 'File',
- $frontendOptions,
- $backendOptions);
- Zend_Translate::setCache($cache);
- $translate = new Zend_Translate('gettext',
- '/chemin/vers/traduction.mo',
- 'en');
- ]]></programlisting>
- <note>
- <para>Vous devez paramétrer le cache <emphasis role="strong">avant</emphasis> d'utiliser ou d'initialiser
- tout adaptateur ou instance de <classname>Zend_Translate</classname>. Sinon votre source de traduction ne sera pas
- mise en cache tant que vous n'aurez pas ajouté une nouvelle source avec la méthode
- <code>addTranslation()</code>.</para>
- </note>
- </sect2>
- </sect1>
|