<?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 <methodname>setDisableTranslator($flag)</methodname>
            o pasando la opción <methodname>disableTranslator</methodname> 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 language="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 language="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 language="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
                    <methodname>setTranslator()</methodname>:
                </para>

                 <programlisting language="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:
-->
