| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 15103 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.form.i18n">
- <title>Internacionalización de Zend_Form</title>
- <para>
- Cada vez más, desarrolladores necesitan adaptar su contenido para multiples
- idiomas y regiones. <classname>Zend_Form</classname> intenta hacer de ésta una tarea trivial, y
- provee funcionalidad en ambas <link
- linkend="zend.translate">Zend_Translate</link> y <link
- linkend="zend.validate">Zend_Validate</link> para realizar esa funcionalidad.
- </para>
- <para>
- Por defecto, no se realiza ninguna internacionalización (I18n). Para iniciar las caraterísticas
- de I18n en <classname>Zend_Form</classname>, se necesitará instanciar un objeto
- <classname>Zend_Translate</classname> con un adaptador apropiado, y
- adjuntarlo a <classname>Zend_Form</classname> y/o <classname>Zend_Validate</classname>.
- Ver la <link linkend="zend.translate">documentación Zend_Translate
- </link> para más información sobre crear el objeto traducción
- y los archivos de traducción
- </para>
- <note>
- <title>La Traducción Puede Ser Deshabilitado Por Item</title>
- <para>
- Se puede deshabilitar la traducción para cualquier formulario, elemento, grupo de visualización o
- subformulario llamando al método <code>setDisableTranslator($flag)</code>
- o pasando la opción <code>disableTranslator</code> al
- objeto. Puede ser de mucha ayuda cuando se quiere deshabilitar selectivamente
- la traducción para elementos individuales o grupo de elementos.
- </para>
- </note>
- <sect2 id="zend.form.i18n.initialization">
- <title>Inicializando I18n en formularios</title>
- <para>
- Para poder inicializar I18n en formularios, se necesitará un objeto
- <classname>Zend_Translate</classname> o un objeto
- <classname>Zend_Translate_Adapter</classname>, como se detalló en la documentación
- <classname>Zend_Translate</classname>. Una vez que se tenga el
- objeto traducción, existen varias opciones:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis>Fácil:</emphasis> añadirlo al registro. Todos los componentes
- I18n de Zend Framework descubrirán automáticamente un objeto
- traducción que está en el registro con la clave 'Zend_Translate'
- y lo usará para ejecutar la traducción y/o la localización:
- </para>
- <programlisting role="php"><![CDATA[
- // use la clave 'Zend_Translate'; $translate es un objeto Zend_Translate:
- Zend_Registry::set('Zend_Translate', $translate);
- ]]></programlisting>
- <para>
- Será recibido por <classname>Zend_Form</classname>,
- <classname>Zend_Validate</classname> y
- <classname>Zend_View_Helper_Translate</classname>.
- </para>
- </listitem>
- <listitem>
- <para>
- Si todo lo que le preocupa es traducir los mensajes de error de
- validación, puede registrar el objeto traducción con
- <classname>Zend_Validate_Abstract</classname>:
- </para>
- <programlisting role="php"><![CDATA[
- // Decir a todas las clases de validación que se use un adaptador especifico de traducción
- Zend_Validate_Abstract::setDefaultTranslator($translate);
- ]]></programlisting>
- </listitem>
- <listitem>
- <para>
- Alternativamente, se puede adjuntar al objeto <classname>Zend_Form</classname>
- como un traductor global. Tiene el mismo efecto que traduciendo los
- mensajes de error de validación.
- </para>
- <programlisting role="php"><![CDATA[
- // Decir a todas las clases del formulario usar un adaptador especifico, así como también
- // use este adaptador para traducir mensajes de error de validación
- Zend_Form::setDefaultTranslator($translate);
- ]]></programlisting>
- </listitem>
- <listitem>
- <para>
- Finalmente, se puede adjuntar un traductor a una instancia especifica de un
- formulario o a elementos especificar usando sus métodos
- <code>setTranslator()</code>:
- </para>
- <programlisting role="php"><![CDATA[
- // Decir a *esta* instancia del formulario que use un adaptador especifico de traducción;
- // será usado para traducir mensajes de error de validación para todos los
- // elementos:
- $form->setTranslator($translate);
- // Decir a *este* elemento usar un adaptador especifico de traducción; será
- // usado para traducir los mensajes de error de validación para este
- // elemento en particular:
- $element->setTranslator($translate);
- ]]></programlisting>
- </listitem>
- </itemizedlist>
- </sect2>
- <sect2 id="zend.form.i18n.standard">
- <title>Objetivos estándar I18n</title>
- <para>
- Ahora que ya se tiene adjuntado un objeto de traducción, ¿qué
- se puede traducir exactamente por defecto?
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis>Mensajes de error de validación.</emphasis> Los mensajes
- de error de validación pueden ser traducidos. Para hacerlo, use la variedad de
- constantes de códigos de error de <classname>Zend_Validate</classname>
- las clases de validación como los ID del mensaje. Para más información
- sobre esos códigos, ver la documentación <link
- linkend="zend.validate">Zend_Validate</link>.
- </para>
- <para>
- Alternativamente, desde la versión 1.6.0, se pueden proveer cadenas de
- traducción usando los mensajes de error actuales como mensajes
- identificadores. Este es el caso preferido de uso para 1.6.0 en
- adelante, así como también se volverá obsoleta la traducción de las claves de mensajes en
- versiones futuras.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>Etiquetas.</emphasis> Las etiquetas elemento serán
- traducidas, si una traducción existe.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>Leyendas de campos.</emphasis> Grupos de visualización y
- subformularios se generan por defecto en fieldsets. El
- decorador de fieldsets intenta traducir la leyenda antes de generar el fieldset.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>Descripciones de formularios y elementos.</emphasis> Todos
- los tipos de formulario (elemento, formulario, visualización de grupos, subformularios) permiten
- especificar una descripción opcional. El decorador Description puede generarlo y por defecto
- tomará el valor e intentará traducirlo.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>Valores multi-opción.</emphasis> Para los
- múltiples items que heredan de <classname>Zend_Form_Element_Multi</classname>
- (incluyendo el MultiCheckbox, Multiselect y elementos
- Radio), la valores de opciones (no claves) serán traducidos
- si una traducción esta disponible; eso significa que las
- etiquetas de opciones presentadas al usuario serán traducidas.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>Submit y etiquetas Button.</emphasis> Los múltiples
- elementos Submit y Button (Button, Submit y Reset)
- traducirán la etiqueta mostrada al usuario.
- </para>
- </listitem>
- </itemizedlist>
- </sect2>
- </sect1>
- <!--
- vim:se ts=4 sw=4 tw=80 et:
- -->
|