2010-04-30 31 views
12

Actualmente estoy trabajando con una aplicación codeigniter basada en PHP y he llegado al punto en que está a punto de explotar en varios idiomas.La manera más efectiva de trabajar con múltiples idiomas naturales

¿La clase de lenguaje de Codeigniters es la forma más efectiva de manejar idiomas? ¿Hay alguna biblioteca o herramientas de lenguaje específicas que se usan comúnmente en las aplicaciones de PHP?

Gracias!

Respuesta

12

Nunca he usado CI_Language pero parece que usa matrices de lenguaje para hacer la traducción.

ejemplo excesivamente simplificada de este tipo de método:

$trans = array(
    'MAIN_TITLE' => 'Title Here' 
); 

echo $trans['MAIN_TITLE']; 

Personalmente, creemos que esta muy molesto porque estás editando luego puntos de vista que están llenas de nombres clave de la matriz en lugar de texto útil. Lo cual puede ser bastante molesto a veces. Sin mencionar que debes recordar qué claves se correlacionan con qué cadenas si las estás usando en múltiples lugares.

Yo uso Gettext que me resulta mucho más fácil. Solo tiene que ajustar sus cadenas con el método de traducción: _(). Luego, una vez que haya terminado con su aplicación, abre PoEdit y crea el nuevo archivo de idioma. PoEdit analizará todos mis archivos fuente buscando cadenas como esta <?php echo _('Title here') ?> y las insertará en el archivo de idioma .po. A continuación, puede ir cadena por cadena y traducir el texto fácilmente dentro de PoEdit. El beneficio de esto es que tiene la traducción fuente allí dentro de PoEdit, en lugar de un nombre de clave de matriz sin sentido en algún archivo de inclusión

Todo esto hace que mi vida sea mucho más fácil ya que puedo actualizar mis archivos de idioma todos los viernes con un clic . Cualquier traducción nueva o modificada se agregará automáticamente a mi archivo de idioma y cualquier traducción no utilizada se eliminará automáticamente. Envío los archivos a mis 3 filiales internacionales para su traducción, y mis cambios y archivos de idiomas actualizados están listos para ser implementados el lunes por la mañana

+0

Gracias por su respuesta, Mark. Muy apreciado. ¡Su enfoque usando gettext es interesante! Estoy pensando en hacer casi lo mismo, pero una versión de base de datos que se almacenará en caché y en su lugar se actualizará cuando se solicite. – Industrial

+0

Sería realmente bueno ver más ejemplos en diferentes enfoques sobre este tema, sin decir que su solución es mala. – Industrial

+1

Es posible que desee descargar ZF y ver los diferentes adaptadores para Zend_Translate: http://framework.zend.com/manual/en/zend.translate.adapter.html para obtener algunas ideas adicionales. Cubren prácticamente todos los métodos de localización populares – Mark

Cuestiones relacionadas