Tabla de contenidos
- 74.1. Introducción
- 74.2. Adaptadores para Zend_Translate
- 74.2.1. Cómo decidir qué adaptador de traducción usar
- 74.2.1.1. Zend_Translate_Adapter_Array
- 74.2.1.2. Zend_Translate_Adapter_Csv
- 74.2.1.3. Zend_Translate_Adapter_Gettext
- 74.2.1.4. Zend_Translate_Adapter_Ini
- 74.2.1.5. Zend_Translate_Adapter_Tbx
- 74.2.1.6. Zend_Translate_Adapter_Tmx
- 74.2.1.7. Zend_Translate_Adapter_Qt
- 74.2.1.8. Zend_Translate_Adapter_Xliff
- 74.2.1.9. Zend_Translate_Adapter_XmlTm
- 74.2.2. Integrar adaptadores escritos por uno mismo
- 74.2.3. Acelerar todos los adaptadores
- 74.3. Uso de adaptadores de traducción
- 74.4. Creación de archivos fuente
- 74.5. Características adicionales para la traducción
- 74.5.1. Opciones para los adaptadores
- 74.5.2. Gestión de idiomas
- 74.5.3. Detección automática de fuentes
- 74.5.4. Enrutamiento de traducciones
- 74.5.5. Combinación de múltiples fuentes de traducción
- 74.5.6. Comprobación de traducciones
- 74.5.7. Cómo registrar traducciones no encontradas
- 74.5.8. Acceso a los datos de origen
- 74.6. Notaciones plurales para la traducción
Zend_Translate es la solución de Zend Framework para aplicaciones
multilingües.
En las aplicaciones multilingües, el contenido debe traducirse a varios idiomas y mostrarse en función del idioma del usuario. PHP ya ofrece varias formas de abordar este tipo de problemas, sin embargo la solución de PHP presenta algunos problemas:
API inconsistente: No existe una única API para los distintos formatos de origen. El uso de gettext, por ejemplo, es muy complicado.
PHP solo soporta gettext y arrays nativos: PHP por sí mismo solo ofrece soporte para arrays o gettext. Todos los demás formatos de origen se tienen que codificar manualmente, porque no existe soporte nativo.
Sin detección del idioma predeterminado: El idioma predeterminado del usuario no se puede detectar sin un conocimiento profundo de los aspectos internos de los distintos navegadores web.
Gettext no es seguro para hilos (thread-safe): La biblioteca gettext de PHP no es segura para hilos, y no debería usarse en un entorno multihilo. Esto se debe a problemas del propio gettext, no de PHP, pero es un problema existente.
Zend_Translate no tiene los problemas anteriores. Por eso
recomendamos usar Zend_Translate en lugar de las funciones nativas de
PHP. Los beneficios de Zend_Translate son:
Soporta múltiples formatos de origen:
Zend_Translatesoporta varios formatos de origen, incluyendo los soportados por PHP, y otros formatos como archivos TMX y CSV.Gettext seguro para hilos: El lector de gettext de
Zend_Translatees seguro para hilos. No hay problemas al usarlo en entornos multihilo.API sencilla y genérica: La API de
Zend_Translatees muy sencilla y requiere solo un puñado de funciones. Así que es fácil de aprender y fácil de mantener. Todos los formatos de origen se manejan de la misma manera, de modo que si el formato de sus archivos fuente cambia de Gettext a TMX, solo necesita cambiar una línea de código para especificar el adaptador de almacenamiento.Detección del idioma estándar del usuario: El idioma preferido del usuario que accede al sitio puede detectarse y ser usado por
Zend_Translate.Detección automática de fuentes:
Zend_Translatees capaz de detectar e integrar múltiples archivos fuente y, además, detectar el locale que se debe usar en función del directorio o los nombres de archivo.
Así que comencemos con el negocio del multilingüismo. Lo que queremos hacer es traducir la salida de nuestras cadenas para que la vista produzca la salida traducida. De lo contrario tendríamos que escribir una vista para cada idioma, y a nadie le gustaría hacer esto. Por lo general, los sitios multilingües son muy sencillos en su diseño. Solo hay cuatro pasos que tendría que realizar:
Decidir qué adaptador desea usar;
Crear su vista e integrar
Zend_Translateen su código;Crear el archivo fuente a partir de su código;
Traducir su archivo fuente al idioma deseado.
Las siguientes secciones le guiarán a través de los cuatro pasos. Lea las próximas páginas para crear su propia aplicación web multilingüe.