miércoles, 1 de junio de 2011

Crear una Aplicacion Multilenguaje en PHP

Bien hoy veremos como crear una aplicacion multilenguaje usando php claro que se podra aplicar en otros lenguajes de programacion espero que agarren la idea de como funciona y poder aplicarla a sus proyectos.

Hoy en dia vemos muchas web que tienen muchos idiomas tambien programas que los podemos cambiar entre idiomas , pues bien como hacen esto , pues no hacen una web en cada idioma ni tampoco hacen otro programa para la version en ingles , todo esto lo podemos hacer con varios XML en donde tengamos todo lo relacionado a nuestro sistema por ejemplo mensajes de error , mensajes de confirmacion, algunas etiquetas , algunos titulos que tengamos que usar todo iria dentro de un xml.

bien luego de tener nuestros xml para español para ingles para frances solo basta hacer una estructura por la cual sea reusable y bastante util para general estas configuraciones.

Luego de tener nuestros archivos xml en todos los idiomas disponibles en la aplicacion solo basta usar la clase de leer xml generica para accesar a todos los nodos padres y traer todos sus nodos hijos en un arreglo.

Luego haremos otro XML que contenga la configuracion existente tales como que idioma estamos usando y el archivo de localizacion mas un identificador para saber que archivo xml ir a traer.

luego tenemos una clase que lee esa configuracion y nos indica que archivo xml de lenguaje tenemos que leer y traer el modulo o pantalla que necesitemos independiente del lenguaje .

mas adelante tenemos un archivo que manda a traer todo el lenguaje de un modulo del xml para luego meterlo en una matriz y devolver los datos en otra matriz con los datos cargados para solo hacer una simple traida de datos de un array con el nombre a que se refiere.

Primero veamos la estructura de como esta formado :

Este es el diagrama que representa el modulo de configuracion de lenguaje ahora veamos el codigo de cada clase .

Este archivo xml es el que guarda la configuracion del lenguaje a la hora de instala el sistema solo basta generarlo con php y sobrescribirlo cuando el usuario lo requiera. Lo unico que utilizaremos aca por el momento sera el identicador que el siguiente archivo lo leera y ira a traer ese archivo xml veamos esa clase.

Primero leemos el xml de configuracion y extraemos el identificador y lo comparamos con los posibles predefinidos en el sistema y retornamos un nombre de archivo que contiene todo el lenguaje de nuestra aplicacion separada por modulos veamos ese archivo xml.

Aca tenemos que usar estandares para no confundirnos y tampoco hacer un desorden en este archivo puedes hacer tus estandares . o usar los mios msg son mensajes , et son etiquetas , bt son botones .

Bien pero como es multilenguaje tenemos que crear todos los archivos posibles de lenguaje que esten disponibles dentro de la aplicacion.

Ahora veamos el archivo que manda a llamar todos los mensajes o etiquetas o valores de botones que necesitemos para un modulo .


Aca tenemos que especificar todas las etiquetas que hemos definido por modulo y esto nos regresara una matriz de objetos en cual es asociativo no necesitamos identificarlo con indices solo con el nombre de la etiqueta.

Ahora veamos el archivo que tendria que estar fuera de todo el modulo de lenguaje que sirve para solo llamarlo y que nos devuelva el array del modulo.

Ya hecha esta clase solo basta con llamarlo y donde necesitemos los mensajes del idioma solo hacemos esto:

solo basta con llamarlo asi .

Mas adelante veremos como usar la clase conexion desarrollando metodos los cuales tendran una estructura diferente que haremo uso de la ocultacion de la programacion orientada a objetos y lo veremos aplicado a un login.

comenten no sean bayuncos...

3 comentarios:

  1. Para crear sitios o aplicaciones multi-idioma yo recomiendo altamente esta rápida y intuitiva herramienta de localización para la traduccion de software: https://poeditor.com

    ResponderEliminar
  2. Hola, muy buen articulo, podrías subir el código a github? las imágenes están terribles.

    ResponderEliminar
  3. Muy interesante el articulo, podrías subir el código a github? las imágenes están terribles.

    ResponderEliminar