Zend_Form-I18n.xml 9.0 KB

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