Zend_View-Helpers-Translate.xml 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect3 id="zend.view.helpers.initial.translate">
  5. <title>L'aide de vue Translate</title>
  6. <para>
  7. Souvent le sites Web sont disponibles en plusieurs langues. Pour traduire le contenu
  8. d'un site, vous pouvez simplement utiliser <link linkend="zend.translate.introduction">Zend
  9. Translate</link> et pour intégrer <code>Zend Translate</code> à l'intérieur de vos vues,
  10. vous devriez utiliser l'aide de vue <code>Translate</code>.
  11. </para>
  12. <para>
  13. Dans tous les exemples suivants nous allons utiliser l'adaptateur de traduction
  14. <code>Array</code>. Bien sûr vous pouvez aussi utiliser toute instance de
  15. <classname>Zend_Translate</classname> ainsi que toutes sous-classes de
  16. <classname>Zend_Translate_Adapter</classname>. Il y a plusieurs manières d'initialiser
  17. l'aide de vue <code>Translate</code> :
  18. </para>
  19. <itemizedlist>
  20. <listitem>
  21. <para>enregistré préalablement dans <classname>Zend_Registry</classname></para>
  22. </listitem>
  23. <listitem>
  24. <para>après, par l'interface fluide</para>
  25. </listitem>
  26. <listitem>
  27. <para>directement en initialisant la classe</para>
  28. </listitem>
  29. </itemizedlist>
  30. <para>
  31. Une instance préalablement enregistré de <classname>Zend_Translate</classname> est
  32. l'utilisation préférée pour cette aide. Vous pouvez ainsi sélectionner la locale à utiliser
  33. avant d'ajouter l'adaptateur dans le registre.
  34. </para>
  35. <note>
  36. <para>
  37. Nous parlons de locales et non de langues car une langue peut aussi contenir une
  38. région. Par exemple l'anglais est parlé en différents dialectes. Il peut y avoir une
  39. traduction pour l'anglais et une pour l'américain. Ainsi, nous disons "locale" plutôt
  40. que "langues".
  41. </para>
  42. </note>
  43. <example id="zend.view.helpers.initial.translate.registered">
  44. <title>Instance enregistrée</title>
  45. <para>
  46. Pour utiliser une instance enregistrée, créez une instance de
  47. <classname>Zend_Translate</classname> ou <classname>Zend_Translate_Adapter</classname>
  48. et enregistrez la dans <classname>Zend_Registry</classname> en utilisant la clé
  49. <classname>Zend_Translate</classname>.
  50. </para>
  51. <programlisting language="php"><![CDATA[
  52. // notre adaptateur d'exemple
  53. $adapter = new Zend_Translate(
  54. array(
  55. 'adapter' => 'array',
  56. 'content' => array('simple' => 'einfach'),
  57. 'locale' => 'de'
  58. )
  59. );
  60. Zend_Registry::set('Zend_Translate', $adapter);
  61. // à l'intérieur de votre vue
  62. echo $this->translate('simple');
  63. // ceci retourne 'einfach'
  64. ]]></programlisting>
  65. </example>
  66. <para>
  67. Si vous êtes plus familier avec l'interface fluide, alors vous pouvez aussi créer une
  68. instance à l'intérieur de votre vue et initialiser l'aide ensuite.
  69. </para>
  70. <example id="zend.view.helpers.initial.translate.afterwards">
  71. <title>A l'intérieur de la vue</title>
  72. <para>
  73. Pour utiliser l'interface fluide, créez une instance de
  74. <classname>Zend_Translate</classname> ou <classname>Zend_Translate_Adapter</classname>,
  75. appelez l'aide sans paramètres, et appelez la méthode
  76. <methodname>setTranslator()</methodname>.
  77. </para>
  78. <programlisting language="php"><![CDATA[
  79. // à l'intérieur de votre vue
  80. $adapter = new Zend_Translate(
  81. array(
  82. 'adapter' => 'array',
  83. 'content' => array('simple' => 'einfach'),
  84. 'locale' => 'de'
  85. )
  86. );
  87. $this->translate()->setTranslator($adapter)->translate('simple');
  88. // ceci retourne 'einfach'
  89. ]]></programlisting>
  90. </example>
  91. <para>
  92. Si vous utilisez votre aide sans <classname>Zend_View</classname>, alors vous pouvez
  93. aussi l'utiliser directement.
  94. </para>
  95. <example id="zend.view.helpers.initial.translate.directly">
  96. <title>Utilisation directe</title>
  97. <programlisting language="php"><![CDATA[
  98. // notre adaptateur d'exemple
  99. $adapter = new Zend_Translate(
  100. array(
  101. 'adapter' => 'array',
  102. 'content' => array('simple' => 'einfach'),
  103. 'locale' => 'de'
  104. )
  105. );
  106. // initialiser l'adaptateur
  107. $translate = new Zend_View_Helper_Translate($adapter);
  108. print $translate->translate('simple');
  109. // ceci retourne 'einfach'
  110. ]]></programlisting>
  111. <para>
  112. Vous devriez utiliser cette façon de faire si vous ne travaillez pas avec
  113. <classname>Zend_View</classname> et que vous avez besoin de créer des affichages
  114. traduits.
  115. </para>
  116. </example>
  117. <para>
  118. Comme vu auparavant, la méthode <methodname>translate()</methodname> est utilisé pour retourner la
  119. traduction. Appelez la simplement avec l'identifiant de message de votre adaptateur de
  120. traduction. Mais il peut aussi avoir à remplacer des paramètres dans la chaîne de
  121. traduction. Donc, il accepte des paramètres de deux manières : soit comme une liste de
  122. paramètres, soit comme un tableau de paramètres. Par exemple :
  123. </para>
  124. <example id="zend.view.helpers.initial.translate.parameter">
  125. <title>Paramètres unique</title>
  126. <para>Pour utiliser un paramètre unique, ajoutez le en fin de méthode :</para>
  127. <programlisting language="php"><![CDATA[
  128. // à l'intérieur de votre vue
  129. $date = "Monday";
  130. $this->translate("Today is %1\$s", $date);
  131. // ceci retourne 'Heute ist Monday'
  132. ]]></programlisting>
  133. </example>
  134. <note>
  135. <para>
  136. Gardez à l'esprit que si vous utilisez des paramètres qui sont aussi des textes,
  137. vous pouvez aussi avoir à traduire ces paramètres.
  138. </para>
  139. </note>
  140. <example id="zend.view.helpers.initial.translate.parameterlist">
  141. <title>Liste de paramètres</title>
  142. <para>Ou utiliser une liste de paramètres et ajoutez les en fin de méthode :</para>
  143. <programlisting language="php"><![CDATA[
  144. // à l'intérieur de votre vue
  145. $date = "Monday";
  146. $month = "April";
  147. $time = "11:20:55";
  148. $this->translate("Today is %1\$s in %2\$s. Actual time: %3\$s",
  149. $date,
  150. $month,
  151. $time);
  152. // ceci retourne 'Heute ist Monday in April. Aktuelle Zeit: 11:20:55'
  153. ]]></programlisting>
  154. </example>
  155. <example id="zend.view.helpers.initial.translate.parameterarray">
  156. <title>Tableau de paramètres</title>
  157. <para>Ou utiliser un tableau de paramètres et ajoutez le en fin de méthode :</para>
  158. <programlisting language="php"><![CDATA[
  159. // à l'intérieur de votre vue
  160. $date = array("Monday", "April", "11:20:55");
  161. $this->translate("Today is %1\$s in %2\$s. Actual time: %3\$s", $date);
  162. // Could return 'Heute ist Monday in April. Aktuelle Zeit: 11:20:55'
  163. ]]></programlisting>
  164. </example>
  165. <para>
  166. Parfois il est nécessaire de changer la locale pour une traduction. Ceci peut être
  167. fait soit dynamiquement par traduction ou statiquement pour toutes les traductions
  168. suivantes. Et vous pouvez utiliser ceci avec une liste de paramètres ou un tableau de
  169. paramètres. Dans les deux cas la locale doit être fournie comme un paramètre unique
  170. final.
  171. </para>
  172. <example id="zend.view.helpers.initial.translate.dynamic">
  173. <title>Changement dynamique de la locale</title>
  174. <programlisting language="php"><![CDATA[
  175. // à l'intérieur de votre vue
  176. $date = array("Monday", "April", "11:20:55");
  177. $this->translate("Today is %1\$s in %2\$s. Actual time: %3\$s", $date, 'it');
  178. ]]></programlisting>
  179. </example>
  180. <para>
  181. Cet exemple retourne la traduction italienne pour l'identifiant de message. Mais la
  182. locale ne sera utilisée qu'une seule fois. La traduction suivante utilisera la locale de
  183. l'adaptateur. Normalement vous réglerez la locale au niveau de votre adaptateur avant de le
  184. mettre dans le registre. Mais vous pouvez aussi paramétrer la locale avec l'aide de vue
  185. :
  186. </para>
  187. <example id="zend.view.helpers.initial.translate.static">
  188. <title>Changement statique de la locale</title>
  189. <programlisting language="php"><![CDATA[
  190. // à l'intérieur de votre vue
  191. $date = array("Monday", "April", "11:20:55");
  192. $this->translate()->setLocale('it');
  193. $this->translate("Today is %1\$s in %2\$s. Actual time: %3\$s", $date);
  194. ]]></programlisting>
  195. </example>
  196. <para>
  197. L'exemple ci-dessus paramètre <code>'it'</code> comme nouvelle locale par défaut, elle
  198. sera utilisée pour toutes les traductions ultérieures.
  199. </para>
  200. <para>
  201. Bien sûr il existe aussi la méthode <methodname>getLocale()</methodname> pour récupérer le réglage
  202. courant de la locale.
  203. </para>
  204. <example id="zend.view.helpers.initial.translate.getlocale">
  205. <title>Récupération de la locale courante</title>
  206. <programlisting language="php"><![CDATA[
  207. // à l'intérieur de votre vue
  208. $date = array("Monday", "April", "11:20:55");
  209. // retourne 'de' comme réglé dans les exemples précédents
  210. $this->translate()->getLocale();
  211. $this->translate()->setLocale('it');
  212. $this->translate("Today is %1\$s in %2\$s. Actual time: %3\$s", $date);
  213. // retourne 'it' comme nouvelle locale par défaut
  214. $this->translate()->getLocale();
  215. ]]></programlisting>
  216. </example>
  217. </sect3>