Zend_Form-I18n.xml 7.3 KB

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