TigerZF
🌐Español

Capítulo 74. Zend_Translate

Tabla de contenidos

74.1. Introducción
74.1.1. Iniciándose en el multilingüismo
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.3.1. Estructuras de las fuentes de traducción
74.4. Creación de archivos fuente
74.4.1. Creación de archivos fuente Array
74.4.2. Creación de archivos fuente Gettext
74.4.3. Creación de archivos fuente TMX
74.4.4. Creación de archivos fuente CSV
74.4.5. Creación de archivos fuente INI
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.2.1. Gestión automática de idiomas
74.5.2.2. Uso de un país como idioma
74.5.3. Detección automática de fuentes
74.5.3.1. Idioma mediante nombres de directorios
74.5.3.2. Idioma mediante nombres de archivo
74.5.3.2.1. Nombre de archivo completo
74.5.3.2.2. Extensión del archivo
74.5.3.2.3. Tokens del nombre de archivo
74.5.3.3. Ignorar archivos y directorios especiales
74.5.3.3.1. Ignorar un directorio o archivo especial
74.5.3.3.2. Ignorar varios directorios o archivos
74.5.3.3.3. Ignorar nombres específicos
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
74.6.1. Traducciones plurales tradicionales
74.6.2. Traducciones plurales modernas
74.6.3. Archivos fuente con plurales
74.6.3.1. Fuente Array con definiciones de plural
74.6.3.2. Fuente Csv con definiciones de plural
74.6.3.3. Fuente Gettext con definiciones de plural
74.6.4. Reglas de plural personalizadas

74.1. Introducció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_Translate soporta 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_Translate es seguro para hilos. No hay problemas al usarlo en entornos multihilo.

  • API sencilla y genérica: La API de Zend_Translate es 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_Translate es 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.

74.1.1. Iniciándose en el multilingüismo

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:

  1. Decidir qué adaptador desea usar;

  2. Crear su vista e integrar Zend_Translate en su código;

  3. Crear el archivo fuente a partir de su código;

  4. 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.