| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.form.i18n">
- <title>Internationaliser un formulaire Zend_Form</title>
- <para>
- De plus en plus de développeurs ont besoin de fournir des applications multilingues.
- <classname>Zend_Form</classname> propose des moyens simples dans ce but, et gère cette
- responsabilité en tandem avec <link linkend="zend.translate">Zend_Translate</link> et <link
- linkend="zend.validate">Zend_Validate</link>.
- </para>
- <para>
- Par défaut, aucune internationalisation (i18n) n'est effectuée. Pour l'activer dans
- <classname>Zend_Form</classname>, vous devrez instancier un objet
- <classname>Zend_Translate</classname> avec un adaptateur et l'attacher à
- <classname>Zend_Form</classname> et/ou <classname>Zend_Validate</classname>. Voyez la <link
- linkend="zend.translate">documentation de Zend_Translate</link> pour plus d'informations sur
- la création de son objet et de ses adaptateurs.
- </para>
- <note>
- <title>L'i18n peut être désactivée par objet</title>
- <para>
- Vous pouvez désactiver la traduction pour tout formulaire, élément, groupe
- d'affichage ou sous-formulaire en appelant sa méthode
- <methodname>setDisableTranslator($flag)</methodname> ou en lui passant un paramètre
- <code>disableTranslator</code>. Ceci peut être utile pour désactiver l'i18n pour des
- éléments de formulaires individuels, ou des groupes d'éléments par exemple.
- </para>
- </note>
- <sect2 id="zend.form.i18n.initialization">
- <title>Initialiser l'i18n dans les formulaires</title>
- <para>
- Pour activer les traductions dans vos formulaires, vous avez besoin soit d'un
- objet <classname>Zend_Translate</classname> complet, ou alors d'un objet
- <classname>Zend_Translate_Adapter</classname> , comme ceci est détaillé dans la
- documentation de <classname>Zend_Translate</classname>. Une fois un objet d'i18n en
- votre possession, plusieurs choix s'offrent à vous :
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis>Le plus simple</emphasis> : ajoutez l'objet d'i18n dans le
- registre. Tout composant utilisant l'i18n dans Zend Framework a la capacité de
- découvrir de lui-même un objet de traduction si celui-ci est enregistré dans le
- registre à la clé "Zend_Translate" :
- </para>
- <programlisting language="php"><![CDATA[
- // utilisez la clé registre 'Zend_Translate' ;
- // $translate est un objet Zend_Translate :
- Zend_Registry::set('Zend_Translate', $translate);
- ]]></programlisting>
- <para>
- Cet objet sera cherché par <classname>Zend_Form</classname>,
- <classname>Zend_Validate</classname>, et
- <classname>Zend_View_Helper_Translate</classname>.
- </para>
- </listitem>
- <listitem>
- <para>
- Si tout ce qui vous importe est la traduction des messages d'erreurs, vous
- pouvez ajouter l'objet de traduction à
- <classname>Zend_Validate_Abstract</classname> :
- </para>
- <programlisting language="php"><![CDATA[
- // Indique aux classes de validation d'utiliser
- // un objet de traduction spécifique :
- Zend_Validate_Abstract::setDefaultTranslator($translate);
- ]]></programlisting>
- </listitem>
- <listitem>
- <para>
- Autre manière de procéder; attacher un objet de traduction à
- <classname>Zend_Form</classname> de manière générale. Ceci aura pour effet,
- entres-autres, de gérer la traduction des messages d'erreur de la
- validation :
- </para>
- <programlisting language="php"><![CDATA[
- // Indique à toutes les classes de formulaire d'utiliser un objet de traduction
- // Indique aussi aux validateurs d'utiliser ce même objet pour traduire
- // les messages d'erreur :
- Zend_Form::setDefaultTranslator($translate);
- ]]></programlisting>
- </listitem>
- <listitem>
- <para>
- Enfin, il est possible d'attacher un objet de traduction à une instance du
- formulaire, ou à un ou plusieurs de ses éléments, grâce à
- <methodname>setTranslator()</methodname> :
- </para>
- <programlisting language="php"><![CDATA[
- // Indique à *cette* instance de formulaire, d'utiliser un objet de
- // traduction. L'objet de traduction sera aussi utilisé par tous les
- // validateurs pour traduire les messages d'erreur :
- $form->setTranslator($translate);
- // Indique à *cette* instance d'élément de formulaire, d'utiliser
- // un objet de traduction. L'objet de traduction sera aussi utilisé
- // par tous les validateurs de *cet* élément spécifique :
- $element->setTranslator($translate);
- ]]></programlisting>
- </listitem>
- </itemizedlist>
- </sect2>
- <sect2 id="zend.form.i18n.standard">
- <title>Cibles gérées par l'I18n</title>
- <para>
- Maintenant que vous avez attaché un objet de traduction, que pouvez vous faire
- avec ?
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis>Messages d'erreur des validateurs</emphasis> : les messages
- d'erreurs des validateurs peuvent être traduits. Pour cela, utilisez les
- identifiants des messages des validateurs (constantes de vos validateurs
- <classname>Zend_Validate</classname>. Pour plus d'informations sur ces clés,
- voyez la documentation de <link
- linkend="zend.validate">Zend_Validate</link>.
- </para>
- <para>
- Aussi, depuis la version 1.6.0, vous pouvez fournir des chaînes de
- traduction en utilisant les messages d'erreur actuels comme identifiants. C'est
- le comportement recommandé pour 1.6.0 ou supérieures, nous allons déprécier
- l'utilisation des clés (constantes de classe) dans les prochaines
- versions.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>Labels</emphasis> : les labels des éléments seront traduits si
- un objet de traduction et une chaîne de traduction existent.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>Légende des Fieldset</emphasis> : les groupes d'éléments et les
- sous-formulaires sont rendus dans des "fieldsets" par défaut. Le décorateur
- FieldSet essaye de traduire la légende via l'objet de traduction.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>Description des formulaires et éléments de
- formulaire</emphasis> : tous les types relatifs au formulaire (éléments,
- formulaires, groupes d'éléments ou sous-formulaires) permettent de spécifier
- une description optionnelle. Le décorateur Description essaye de traduire la
- description.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>Valeurs de Multi-option</emphasis> : les éléments héritant de
- <classname>Zend_Form_Element_Multi</classname>(MultiCheckbox, Multiselect, et
- Radio) peuvent aussi traduire les valeurs (et non les clés) de leurs
- options.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>Labels de Submit et Button</emphasis> : les boutons (éléments
- Submit, Button et Reset) vont traduire le label affiché à l'utilisateur.
- </para>
- </listitem>
- </itemizedlist>
- </sect2>
- </sect1>
|