July 15, 2013

Awesome_Language_File_Creator

Awesome Language File Creator

by ZeroDragon
Categories: Uncategorized
Tags: No Tags
Comments: Leave a Comment

Prólogo

Sitios con multi lenguajes.

Cada que oigo esto, algo en mi tiembla… no porque sea más trabajo.. si no porque no te proporcionan la traducción y esperan que hagas un trabajo impecable.
Sin embargo, si dejamos esto de lado, implementar diferentes lenguajes en un sitio, es sencillo si se hace de la forma correcta.

En el tiempo que tengo desarrollando he visto muchos estilos de código, algunos increíblemente geniales y otros… digamos que son lo opuesto.

Una forma de hacer esto es copiando todo el proyecto y pegándolo dentro de una carpeta /english y empezar a modificar todas las instancias del texto. No simplemente es más tedioso y difícil de darle mantenimiento al código. Si no que también es ineficiente y puede incluso causar problemas de posicionamiento y contenido duplicado.

Otra forma es implementando un diccionario de terminologías, implementarlo en donde sea necesario y cambiar el diccionario a través de una variable de sesión, un GET o un directorio. De esta forma puedes implementar cambios a futuro con un mínimo de dificultad y aligerar el tamaño del proyecto en el servidor.

Implementar diferentes diccionarios es proporcionalmente complicado dependiendo de como esté estructurado tu proyecto. Si tienes un código spaghetti, será bastante entretenido. Si por el contrario estás siguiendo un esquema MVC, puedes reducir tus diccionarios a las vistas. Ahora bien, muchos frameworks ya tienen implementada una forma “nativa” de manejar esto, así que ¿para qué vas a hacer el tuyo si ya existe uno hecho?.

Fue así que llegué a este punto. Al utilizar Code Igniter e investigar está feature, esperaba yo algún tipo de gettext implementado, sin embargo, los diccionarios son más que nada un arreglo donde defines todas las implementaciones. No está mal, podría ser peor, pero generar los dos diccionarios, modificarlos, borrar items, etc. Se vuelve algo complicado. Regresamos al punto de tener dos códigos similares y tener que editarlos por separado.

Al hacer una exhaustiva investigación (google, pagina 1 y 2). Me encontré con que a nadie se le había ocurrido una GUI sencilla de generar estos diccionarios. Entonces me di en la tarea de hacerla yo mismo.

Awesome Language File Creator

Awesome_Language_File_Creator

If you are looking for English, there is a good readme.md file here.

Si bien, hacer esto es solo cuestión de parsear unos archivos, mostrar información y guardarla en el formato adecuado. Me tomó un par de horas llegar a un punto donde lo pude usar y otro par para pimpearlo a mi gusto.

Instalación

Solo hay que clonar el repositorio desde mi github Ponerlo en tu localhost, darle permisos de lectura/escritura a un par de folders y empezar a traducir.

Forma de uso

Si bien el proceso de creación es automático. Hay que detallar como usar la GUI.
Al agregar una definición y sus respectivas traducciones, se va creando un .json con todo ahí guardado. Alternativamente se van generando dos archivos dentro de la carpeta dictionaries.
Estos diccionarios como tales, son los que vamos a copiar (sus contenidos) a nuestro proyecto de CodeIgniter.
Podría haberlo implementado automáticamente… de hecho puede que lo haga como un plug-in de CI en un futuro.

Multi lenguajes

En el repositorio hay un archivo de configuración. Ahí podemos dar de alta diferentes lenguajes para traducir y trabajarlos.

Importar desde Code Igniter

Si ya tenemos algo trabajado, podemos simplemente copiar el contenido de nuestros archivos en CI, pegarlos en los correspondientes archivos dentro de la carpeta de dictionaries y damos click en el link “Import from Code Igniter”.

Esto nos generará un JSON el cual usaremos para reemplazar el que está en db.

Espero que les sea de ayuda a más de una persona… Si veo que sirve de algo, puede que lo extienda para que se implemente como plug-in de codeigniter y jale automáticamente los contenidos de los diccionarios…

Links

Awesome Language File Creator on Github
Codeigniter