Blogs Media: CSS Mania | VivirLatino | Sentido Web | Apps Mania

Publicidad

Mié06Jun2007

Más internacionalización mediante PHP

16:20 H (CET)| Temas: PHP

La internacionalización es un tema del que ya he hablado con anterioridad, pero para mí es algo fundamental, quizás sea por la cantidad de proyectos en los que he trabajado que necesitaban de esta funcionalidad, a veces, para mi gusto, mal tratada.

En el anterior artículo ya hablamos de arrays asociativos, un array con clave el código del texto que deseamos traducir (un buen uso sería el mismo texto en el idioma inicial), y con valor el texto traducido. Debería haber un texto para cada idioma y luego al inicio de la aplicación una asignación del array correspondiente para el idioma.

En el artículo que comentamos nos explican cómo realizarlo mediante el uso de la funciones gettext, una interfaz de programación NLS, y el uso de ficheros PO (un fichero de texto plano que contiene el texto original y el traducido).

Sobre este método me da que pensar sobre su rendimiento. PHP al ser interpretado, todo lo que se meta, se lee y se interpreta. Si no se usa caché para los php, es mejor no introducir código innecesario en nuestros scripts. Según parece, el array asociativo con las traducciones se leerá completo en cada ejecución, cuando en algunos casos no será necesario traducir ni la mitad de las palabras.

En algunos proyectos el diccionario era bastante extenso, por lo que me planteo posibles soluciones para optimizar el código. Una posibilidad es dividir en diccionario por grupos independientes, pero este método hace que gestionar los diccionarios sea una labor más complicada. La otra solución es una carga inicial en cada script de las palabras estrictamente necesarias, habría que evaluar si el tiempo de carga de las palabras necesarias (para lo cual es necesario una operación inicial) es inferior al tiempo de carga completo (tan solo leer e interpretar). ¿Qué pensáis vosotros?

Give your web app international appeal

Relacionados

Feedback (2) » Formulario

1. Juan I. Benavides ~ Miércoles, 06 Jun 2007 | 18:21H:

Sería bueno un cache para para la plantilla y su idioma, como una especie de "interfaz compilada". Me parece que Akelos Framework hace algo parecido.

Guardas los parametros de entrada para identificar tu cache, traduces la interfaz y la guardas... de esa manera, durante el tiempo que quieras tomas la plantilla traducída para que la usen tus controladores.

Claro que aquí hay otro problema... el espacio que requiere el cache y no se hasta donde sea tan rapida su lectura @_@ ... necesitaría pensarlo un poco más...

2. Luis ~ Jueves, 07 Jun 2007 | 07:53H:

Hola Juan.

Creo que Seagull Framework también hace algo parecido.

Puede que no haya una solución perfecta, sino dependiendo de cada situación habrá una u otra.

Saludos

Conversación

Nombre:

Email:

(no aparecerá)

URL:

(opcional)
¿Recordar datos?

↓ Comentarios (XHTML permitido)