php_intl - php internationalization extension
¿Cuáles son las buenas herramientas/frameworks para i18n de una base de código php? (5)
Hemos estado jugando con Zend_Translate , ya que usamos Zend Framework de todos modos. Está muy bien documentado y hasta ahora extremadamente sólido.
En el pasado, prácticamente he usado mi propia solución local . Lo cual implica archivos de lenguaje con constantes o variables que contienen todas las partes de texto y que luego se repiten en la vista / plantilla.
En cuanto a gettext, en el pasado he escuchado referencias sobre la implementación de gettext de PHP como defectuosa, pero realmente no puedo respaldar eso ni tengo ninguna referencia en este momento.
He estado buscando algunas opciones para permitir la localización y la internacionalización de una aplicación dinámica de php. Parece haber una variedad de herramientas disponibles como gettext y Yahoo''s R3 y estoy interesado en escuchar tanto de desarrolladores como de traductores sobre qué herramientas son buenas de usar y qué funcionalidad es importante para facilitar la tarea de implementación y traducción.
Hay una serie de extensiones útiles en pecl: http://pecl.php.net/packages.php?catpid=28&catname=Internationalization
En particular, es posible que desee comprobar php-intl, que proporciona la mayoría de las funciones clave i18n de International Components for Unicode (ICU)
Xataface se puede utilizar para internacionalizar bastante fácilmente una aplicación PHP / MySQL arbitraria. Es compatible con la traducción de su texto estático y sus datos de base de datos. Todo lo que tiene que hacer es agregar una línea o 2 de código a un par de lugares en su aplicación y es bueno irse.
http://xataface.com/documentation/tutorial/internationalization-with-dataface-0.6
la solución basada en la base de datos para mostrar los mensajes no siempre es buena, trabajé en un sitio con más de 15 idiomas y las traducciones fueron un problema.
entonces nuestro diseño fue:
- aplicación de traducción en php-mysql (acceso de traducción, etc.)
- luego las traducciones se escriben en php arrrays
- estas matrices también se almacenan en caché en APC para acelerar el sitio.
así que para localizar diferentes idiomas solo necesita hacer una inclusión
me gusta
<?php
include(''lang/en.php'');
include(''lang/en_us.php''); // this file overrides few keys from the last one.
?>
La implementación de PHP gettext funciona muy bien. Y los archivos po con po edit y gettext son una buena manera de lidiar con la localización, teniendo en cuenta que ninguna solución de este tipo puede manejar por completo las complejidades de los distintos idiomas. Por ejemplo, el método gettext es muy bueno en formas plurales, pero nada de lo que he visto puede manejar cosas como la conjugación.
Para obtener más información, consulte mi publicación aquí: ¿Cómo construye un sitio web en varios idiomas?