Zend_Form-I18n.xml 8.2 KB

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