Internacionalización de Zend_Form
Cada vez más, desarrolladores necesitan adaptar su contenido para multiples idiomas y
regiones.
Zend_Form
intenta hacer de ésta una tarea trivial, y provee
funcionalidad en ambas
Zend_Translate
y
Zend_Validate
para realizar esa funcionalidad.
Por defecto, no se realiza ninguna internacionalización (I18n). Para iniciar las
caraterísticas de I18n en
Zend_Form
, se necesitará instanciar un
objeto
Zend_Translate
con un adaptador apropiado, y adjuntarlo a
Zend_Form
y/o
Zend_Validate
. Ver la
documentación Zend_Translate
para más información sobre
crear el objeto traducción y los archivos de traducción
La Traducción Puede Ser Deshabilitado Por Item
Se puede deshabilitar la traducción para cualquier formulario, elemento, grupo de
visualización o subformulario llamando al método
setDisableTranslator($flag)
o pasando la opción
disableTranslator
al objeto. Puede ser de mucha ayuda
cuando se quiere deshabilitar selectivamente la
traducción para elementos individuales o
grupo de elementos.
Inicializando I18n en formularios
Para poder inicializar I18n en formularios, se necesitará un objeto
Zend_Translate
o un objeto
Zend_Translate_Adapter
, como se detalló en la documentación
Zend_Translate
. Una vez que se tenga el objeto traducción,
existen varias opciones:
Fácil:
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:
Será recibido por
Zend_Form
,
Zend_Validate
y
Zend_View_Helper_Translate
.
Si todo lo que le preocupa es traducir los mensajes de error de validación,
puede registrar el objeto traducción con
Zend_Validate_Abstract
:
Alternativamente, se puede adjuntar al objeto
Zend_Form
como un traductor global. Tiene el mismo
efecto que traduciendo los mensajes de
error de validación.
Finalmente, se puede adjuntar un traductor a una instancia especifica de un
formulario o a elementos especificar usando sus métodos
setTranslator()
:
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);
]]>Objetivos estándar I18nAhora que ya se tiene adjuntado un objeto de traducción, ¿qué se puede traducir
exactamente por defecto?Mensajes de error de validación.
Los mensajes de error de
validación pueden ser traducidos. Para hacerlo, use la
variedad de constantes de
códigos de error de
Zend_Validate
las clases de
validación como los ID del mensaje. Para más información sobre esos
códigos, ver
la documentación
Zend_Validate
.
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.
Etiquetas.
Las etiquetas elemento serán traducidas, si una
traducción existe.
Leyendas de campos.
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.
Descripciones de formularios y elementos.
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.
Valores multi-opción.
Para los múltiples items que heredan
de
Zend_Form_Element_Multi
(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.
Submit y etiquetas Button.
Los múltiples elementos Submit y
Button (Button, Submit y Reset) traducirán la
etiqueta mostrada al usuario.