Zend_Form-I18n.xml 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.form.i18n">
  5. <title>Internationaliser un formulaire Zend_Form</title>
  6. <para>
  7. De plus en plus de développeurs ont besoin de fournir des applications multilingues.
  8. <classname>Zend_Form</classname> propose des moyens simples dans ce but, et gère cette
  9. responsabilité en tandem avec <link linkend="zend.translate">Zend_Translate</link> et <link
  10. linkend="zend.validate">Zend_Validate</link>.
  11. </para>
  12. <para>
  13. Par défaut, aucune internationalisation (i18n) n'est effectuée. Pour l'activer dans
  14. <classname>Zend_Form</classname>, vous devrez instancier un objet
  15. <classname>Zend_Translate</classname> avec un adaptateur et l'attacher à
  16. <classname>Zend_Form</classname> et/ou <classname>Zend_Validate</classname>. Voyez la <link
  17. linkend="zend.translate">documentation de Zend_Translate</link> pour plus d'informations sur
  18. la création de son objet et de ses adaptateurs.
  19. </para>
  20. <note>
  21. <title>L'i18n peut être désactivée par objet</title>
  22. <para>
  23. Vous pouvez désactiver la traduction pour tout formulaire, élément, groupe
  24. d'affichage ou sous-formulaire en appelant sa méthode
  25. <methodname>setDisableTranslator($flag)</methodname> ou en lui passant un paramètre
  26. <code>disableTranslator</code>. Ceci peut être utile pour désactiver l'i18n pour des
  27. éléments de formulaires individuels, ou des groupes d'éléments par exemple.
  28. </para>
  29. </note>
  30. <sect2 id="zend.form.i18n.initialization">
  31. <title>Initialiser l'i18n dans les formulaires</title>
  32. <para>
  33. Pour activer les traductions dans vos formulaires, vous avez besoin soit d'un
  34. objet <classname>Zend_Translate</classname> complet, ou alors d'un objet
  35. <classname>Zend_Translate_Adapter</classname> , comme ceci est détaillé dans la
  36. documentation de <classname>Zend_Translate</classname>. Une fois un objet d'i18n en
  37. votre possession, plusieurs choix s'offrent à vous&#160;:
  38. </para>
  39. <itemizedlist>
  40. <listitem>
  41. <para>
  42. <emphasis>Le plus simple</emphasis>&#160;: ajoutez l'objet d'i18n dans le
  43. registre. Tout composant utilisant l'i18n dans Zend Framework a la capacité de
  44. découvrir de lui-même un objet de traduction si celui-ci est enregistré dans le
  45. registre à la clé "Zend_Translate"&#160;:
  46. </para>
  47. <programlisting language="php"><![CDATA[
  48. // utilisez la clé registre 'Zend_Translate' ;
  49. // $translate est un objet Zend_Translate :
  50. Zend_Registry::set('Zend_Translate', $translate);
  51. ]]></programlisting>
  52. <para>
  53. Cet objet sera cherché par <classname>Zend_Form</classname>,
  54. <classname>Zend_Validate</classname>, et
  55. <classname>Zend_View_Helper_Translate</classname>.
  56. </para>
  57. </listitem>
  58. <listitem>
  59. <para>
  60. Si tout ce qui vous importe est la traduction des messages d'erreurs, vous
  61. pouvez ajouter l'objet de traduction à
  62. <classname>Zend_Validate_Abstract</classname>&#160;:
  63. </para>
  64. <programlisting language="php"><![CDATA[
  65. // Indique aux classes de validation d'utiliser
  66. // un objet de traduction spécifique :
  67. Zend_Validate_Abstract::setDefaultTranslator($translate);
  68. ]]></programlisting>
  69. </listitem>
  70. <listitem>
  71. <para>
  72. Autre manière de procéder; attacher un objet de traduction à
  73. <classname>Zend_Form</classname> de manière générale. Ceci aura pour effet,
  74. entres-autres, de gérer la traduction des messages d'erreur de la
  75. validation&#160;:
  76. </para>
  77. <programlisting language="php"><![CDATA[
  78. // Indique à toutes les classes de formulaire d'utiliser un objet de traduction
  79. // Indique aussi aux validateurs d'utiliser ce même objet pour traduire
  80. // les messages d'erreur :
  81. Zend_Form::setDefaultTranslator($translate);
  82. ]]></programlisting>
  83. </listitem>
  84. <listitem>
  85. <para>
  86. Enfin, il est possible d'attacher un objet de traduction à une instance du
  87. formulaire, ou à un ou plusieurs de ses éléments, grâce à
  88. <methodname>setTranslator()</methodname>&#160;:
  89. </para>
  90. <programlisting language="php"><![CDATA[
  91. // Indique à *cette* instance de formulaire, d'utiliser un objet de
  92. // traduction. L'objet de traduction sera aussi utilisé par tous les
  93. // validateurs pour traduire les messages d'erreur :
  94. $form->setTranslator($translate);
  95. // Indique à *cette* instance d'élément de formulaire, d'utiliser
  96. // un objet de traduction. L'objet de traduction sera aussi utilisé
  97. // par tous les validateurs de *cet* élément spécifique :
  98. $element->setTranslator($translate);
  99. ]]></programlisting>
  100. </listitem>
  101. </itemizedlist>
  102. </sect2>
  103. <sect2 id="zend.form.i18n.standard">
  104. <title>Cibles gérées par l'I18n</title>
  105. <para>
  106. Maintenant que vous avez attaché un objet de traduction, que pouvez vous faire
  107. avec&#160;?
  108. </para>
  109. <itemizedlist>
  110. <listitem>
  111. <para>
  112. <emphasis>Messages d'erreur des validateurs</emphasis>&#160;: les messages
  113. d'erreurs des validateurs peuvent être traduits. Pour cela, utilisez les
  114. identifiants des messages des validateurs (constantes de vos validateurs
  115. <classname>Zend_Validate</classname>. Pour plus d'informations sur ces clés,
  116. voyez la documentation de <link
  117. linkend="zend.validate">Zend_Validate</link>.
  118. </para>
  119. <para>
  120. Aussi, depuis la version 1.6.0, vous pouvez fournir des chaînes de
  121. traduction en utilisant les messages d'erreur actuels comme identifiants. C'est
  122. le comportement recommandé pour 1.6.0 ou supérieures, nous allons déprécier
  123. l'utilisation des clés (constantes de classe) dans les prochaines
  124. versions.
  125. </para>
  126. </listitem>
  127. <listitem>
  128. <para>
  129. <emphasis>Labels</emphasis>&#160;: les labels des éléments seront traduits si
  130. un objet de traduction et une chaîne de traduction existent.
  131. </para>
  132. </listitem>
  133. <listitem>
  134. <para>
  135. <emphasis>Légende des Fieldset</emphasis>&#160;: les groupes d'éléments et les
  136. sous-formulaires sont rendus dans des "fieldsets" par défaut. Le décorateur
  137. FieldSet essaye de traduire la légende via l'objet de traduction.
  138. </para>
  139. </listitem>
  140. <listitem>
  141. <para>
  142. <emphasis>Description des formulaires et éléments de
  143. formulaire</emphasis>&#160;: tous les types relatifs au formulaire (éléments,
  144. formulaires, groupes d'éléments ou sous-formulaires) permettent de spécifier
  145. une description optionnelle. Le décorateur Description essaye de traduire la
  146. description.
  147. </para>
  148. </listitem>
  149. <listitem>
  150. <para>
  151. <emphasis>Valeurs de Multi-option</emphasis>&#160;: les éléments héritant de
  152. <classname>Zend_Form_Element_Multi</classname>(MultiCheckbox, Multiselect, et
  153. Radio) peuvent aussi traduire les valeurs (et non les clés) de leurs
  154. options.
  155. </para>
  156. </listitem>
  157. <listitem>
  158. <para>
  159. <emphasis>Labels de Submit et Button</emphasis>&#160;: les boutons (éléments
  160. Submit, Button et Reset) vont traduire le label affiché à l'utilisateur.
  161. </para>
  162. </listitem>
  163. </itemizedlist>
  164. </sect2>
  165. </sect1>