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 I18n
Ahora 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.