Zend_Form-I18n.xml 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15103 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.form.i18n">
  5. <title>Internacionalización de Zend_Form</title>
  6. <para> Cada vez más, desarrolladores necesitan adaptar su contenido para multiples idiomas y
  7. regiones. <classname>Zend_Form</classname> intenta hacer de ésta una tarea trivial, y provee
  8. funcionalidad en ambas <link linkend="zend.translate">Zend_Translate</link> y <link
  9. linkend="zend.validate">Zend_Validate</link> para realizar esa funcionalidad. </para>
  10. <para> Por defecto, no se realiza ninguna internacionalización (I18n). Para iniciar las
  11. caraterísticas de I18n en <classname>Zend_Form</classname>, se necesitará instanciar un
  12. objeto <classname>Zend_Translate</classname> con un adaptador apropiado, y adjuntarlo a
  13. <classname>Zend_Form</classname> y/o <classname>Zend_Validate</classname>. Ver la <link
  14. linkend="zend.translate">documentación Zend_Translate </link> para más información sobre
  15. crear el objeto traducción y los archivos de traducción </para>
  16. <note>
  17. <title>La Traducción Puede Ser Deshabilitado Por Item</title>
  18. <para> Se puede deshabilitar la traducción para cualquier formulario, elemento, grupo de
  19. visualización o subformulario llamando al método
  20. <methodname>setDisableTranslator($flag)</methodname> o pasando la opción
  21. <methodname>disableTranslator</methodname> al objeto. Puede ser de mucha ayuda
  22. cuando se quiere deshabilitar selectivamente la traducción para elementos individuales o
  23. grupo de elementos. </para>
  24. </note>
  25. <sect2 id="zend.form.i18n.initialization">
  26. <title>Inicializando I18n en formularios</title>
  27. <para> Para poder inicializar I18n en formularios, se necesitará un objeto
  28. <classname>Zend_Translate</classname> o un objeto
  29. <classname>Zend_Translate_Adapter</classname>, como se detalló en la documentación
  30. <classname>Zend_Translate</classname>. Una vez que se tenga el objeto traducción,
  31. existen varias opciones: </para>
  32. <itemizedlist>
  33. <listitem>
  34. <para>
  35. <emphasis>Fácil:</emphasis> añadirlo al registro. Todos los componentes I18n de
  36. Zend Framework descubrirán automáticamente un objeto traducción que está en el
  37. registro con la clave 'Zend_Translate' y lo usará para ejecutar la traducción
  38. y/o la localización: </para>
  39. <programlisting language="php"><![CDATA[
  40. // use la clave 'Zend_Translate'; $translate es un objeto Zend_Translate:
  41. Zend_Registry::set('Zend_Translate', $translate);
  42. ]]></programlisting>
  43. <para> Será recibido por <classname>Zend_Form</classname>,
  44. <classname>Zend_Validate</classname> y
  45. <classname>Zend_View_Helper_Translate</classname>. </para>
  46. </listitem>
  47. <listitem>
  48. <para> Si todo lo que le preocupa es traducir los mensajes de error de validación,
  49. puede registrar el objeto traducción con
  50. <classname>Zend_Validate_Abstract</classname>: </para>
  51. <programlisting language="php"><![CDATA[
  52. // Decir a todas las clases de validación que se use un adaptador especifico de traducción
  53. Zend_Validate_Abstract::setDefaultTranslator($translate);
  54. ]]></programlisting>
  55. </listitem>
  56. <listitem>
  57. <para> Alternativamente, se puede adjuntar al objeto
  58. <classname>Zend_Form</classname> como un traductor global. Tiene el mismo
  59. efecto que traduciendo los mensajes de error de validación. </para>
  60. <programlisting language="php"><![CDATA[
  61. // Decir a todas las clases del formulario usar un adaptador especifico, así como también
  62. // use este adaptador para traducir mensajes de error de validación
  63. Zend_Form::setDefaultTranslator($translate);
  64. ]]></programlisting>
  65. </listitem>
  66. <listitem>
  67. <para> Finalmente, se puede adjuntar un traductor a una instancia especifica de un
  68. formulario o a elementos especificar usando sus métodos
  69. <methodname>setTranslator()</methodname>: </para>
  70. <programlisting language="php"><![CDATA[
  71. // Decir a *esta* instancia del formulario que use un adaptador especifico de traducción;
  72. // será usado para traducir mensajes de error de validación para todos los
  73. // elementos:
  74. $form->setTranslator($translate);
  75. // Decir a *este* elemento usar un adaptador especifico de traducción; será
  76. // usado para traducir los mensajes de error de validación para este
  77. // elemento en particular:
  78. $element->setTranslator($translate);
  79. ]]></programlisting>
  80. </listitem>
  81. </itemizedlist>
  82. </sect2>
  83. <sect2 id="zend.form.i18n.standard">
  84. <title>Objetivos estándar I18n</title>
  85. <para> Ahora que ya se tiene adjuntado un objeto de traducción, ¿qué se puede traducir
  86. exactamente por defecto? </para>
  87. <itemizedlist>
  88. <listitem>
  89. <para>
  90. <emphasis>Mensajes de error de validación.</emphasis> Los mensajes de error de
  91. validación pueden ser traducidos. Para hacerlo, use la variedad de constantes de
  92. códigos de error de <classname>Zend_Validate</classname> las clases de
  93. validación como los ID del mensaje. Para más información sobre esos códigos, ver
  94. la documentación <link linkend="zend.validate">Zend_Validate</link>. </para>
  95. <para> Alternativamente, desde la versión 1.6.0, se pueden proveer cadenas de
  96. traducción usando los mensajes de error actuales como mensajes identificadores.
  97. Este es el caso preferido de uso para 1.6.0 en adelante, así como también se
  98. volverá obsoleta la traducción de las claves de mensajes en versiones futuras.
  99. </para>
  100. </listitem>
  101. <listitem>
  102. <para>
  103. <emphasis>Etiquetas.</emphasis> Las etiquetas elemento serán traducidas, si una
  104. traducción existe. </para>
  105. </listitem>
  106. <listitem>
  107. <para>
  108. <emphasis>Leyendas de campos.</emphasis> Grupos de visualización y
  109. subformularios se generan por defecto en fieldsets. El decorador de fieldsets
  110. intenta traducir la leyenda antes de generar el fieldset. </para>
  111. </listitem>
  112. <listitem>
  113. <para>
  114. <emphasis>Descripciones de formularios y elementos.</emphasis> Todos los tipos
  115. de formulario (elemento, formulario, visualización de grupos, subformularios)
  116. permiten especificar una descripción opcional. El decorador Description puede
  117. generarlo y por defecto tomará el valor e intentará traducirlo. </para>
  118. </listitem>
  119. <listitem>
  120. <para>
  121. <emphasis>Valores multi-opción.</emphasis> Para los múltiples items que heredan
  122. de <classname>Zend_Form_Element_Multi</classname> (incluyendo el MultiCheckbox,
  123. Multiselect y elementos Radio), la valores de opciones (no claves) serán
  124. traducidos si una traducción esta disponible; eso significa que las etiquetas de
  125. opciones presentadas al usuario serán traducidas. </para>
  126. </listitem>
  127. <listitem>
  128. <para>
  129. <emphasis>Submit y etiquetas Button.</emphasis> Los múltiples elementos Submit y
  130. Button (Button, Submit y Reset) traducirán la etiqueta mostrada al usuario.
  131. </para>
  132. </listitem>
  133. </itemizedlist>
  134. </sect2>
  135. </sect1>