LocalePack.pngFué una agradable noticia para nosotros (la que a su vez hoy compartimos aquí), cuando observamos que el pasado sábado 1º de Mayo, el creador de Pingüino, Jean Pierre Mandon, publicó la versión Beta8 del IDE de Pingüino en la sección downloads del sitio oficial de HackingLabs Francia.

Decimos “agradable” por tres (3) grandes razones: la primera por disponer de una nueva versión del IDE con múltiples mejoras y nuevas funcionalidades que nos acercan a la versión 1.0, la segunda por llevar integrado el aporte de la comunidad PingüinoVE, para el soporte multi-idioma, y la tercera precísamente por esto último, por ser un trabajo hecho desde Venezuela que resultó en una grata razón para festejar el día del trabajador =).

El trabajo de traducción fue una iniciativa de la comunidad PingüinoVE (previamente reseñanda en este Blog), que se inició con la finalidad de incrementar la factibilidad de uso y apropiación de este dispositivo y toda la tecnología que le sustenta, por parte de comunidades de habla hispana.

Así la primera implementación (cual prueba de “caja blanca”) consistió en tomar el código (Python) de la versión Beta7 del IDE (previa) y reemplazar el texto en inglés, por su correspondiente en español, de todas las etiquetas, mensajes y menúes. En el mejor esmero de cumplir con la dinámica “hazlo y publícalo, pronto”, este primer trabajo fué (y está) publicado en las forjas CNTI y CENDITEL. El reemplazo fue “manual”, el esfuerzo muy poco, las pruebas satisfactorias, pero por esta vía no es eficaz o “sostenible” en el tiempo la distribución de un paquete o aplicación de software libre para una comunidad internacional. Pues cada equipo de desarrollo tendría que realizar “desde cero” un nuevo esfuerzo de modificación y/o programación completamente aisaldo e independiente, justo inmediatamente después de la salida de cada versión.

Por ello, en el afán de realizar un aporte significativo y útil para otros, decidimos implementar la traducción, en base un mecanismo más eficaz y versátil de soporte mult-idioma, heredando las mejores prácticas que históricamente la comunidad ha empleado para soluciones de este tipo bajo GNU/Linux, apelando a la recomendación de Carlos Guerrero del CNTI/MPPCTII, dando lugar así a la creación de paquete de internacionalización (i18n), basado en GNU gettext, que incluyera, además de nuestro idioma oficial/”materno”, otros 7 idiomas: Francés, Inglés, Danés, Alemán, Italiano, Portugués y Croata.

El paquete está disponible para su uso, estudio, modificación y distribución libre, en las forjas nacionales de CENDITEL y CNTI. Tanto para la versión 7 del IDE de Pingüino, como para la versión 8 (actual al momento de escribir esta reseña).

Para aquellos mas interesados en los aspectos técnicos de este aporte, hemos descrito brevemente el procedimiento de creación del paquete de traducción, que se fundamentó en el aprovechamiento de las funcionalidades gettext de GNU, a través del uso de las librerías pygettext del lenguaje Python:

Gettext se puede describir como un conjunto de herramientas (GNU) que permiten realizar la traducción “dinámica” (es decir, en tiempo de ejecución) de una aplicación, reemplazando el texto en el idioma original del programa, por el texto de idioma configurado o activo del sistema operativo. Para tal fin, se llevan a cabo un conjunto de pasos:

Codigo_pinguino_po_i18nPack_gedit_500px.png1.- Al código original (cada archivo script de python “.py” no traducido) se le realizan una serie de modificaciones, que consisten en “encerrar” cada literal, palabra, etiqueta o texto a traducir, entre un guión bajo y paréntesis, por ejemplo “File” por: _(”File”).

2.- Luego en un archivo de texto, mediante el uso de la utilidad/comando de consola “pygettext“, se “lee o escanea” el archivo de código (.py) para identificar todas las palabras y/o textos a ser traducidos, marcados con _(), y generando con todas éstas palabras una lista en un archivo en formato de texto llamado “.pot” (Objeto Personal de Plantilla de traducción).

3.- A partir de esta “plantilla” se crea, mediante la utilidad/comando “msginit” por cada idioma a traducir, un archivo en formato de texto con extensión “.po” (Personal Object), donde se editan los pares de valores de traducción. Por ejemplo en el archivo “.po” del idioma español, para la palabra “File” previamente identificada, se edita la alternativa “Archivo”. Por tratarse de un archivo de texto, la edición puede hacerce con vi, gedit, kwrite, nano, emacs o cualquier otro editor según las preferencias del programador.  Ver muestra del .po en la imagen de la izquierda.

4.- Luego este archivo “.po” con los pares de traducción debidamente editados, es “compilado”, mediante la utilidad/comando “msgfmt” en un nuevo archivo, ahora en formato binario, con la extensión “.mo” (Machine Object), que es el archivo utilizado por las funciones gettext “_()” para recuperar la traducción correspondiente al idioma establecido en el sistema, cuando se ejecuta el programa o aplicación.

Como alternativa al proceso de edición manual por cónsola, con las utilidades o comandos Gettext de GNU y/o pygettext de Python, encontramos súmamente útil el uso de una aplicación gráfica llamada PoEdit (instalable vía apt-get, aptitude o synaptic en GNU/Linux Debian, Canaima y Ubuntu), con la cual es posible abrir un archivo “.po”, y editar o actualizar los pares de traducción contenidos en él con muchísima sencillez, e inclusive compilarlo automáticamente a “.mo” con solo guardar los cambios efectuados al “.po”.

Además de publicar el paquete de traducción para la versión Beta8 del IDE tanto en las forjas de CENDITEL y CNTI, también creamos una lista de correos en CoActivate: pinguino-internationalization@lists.coactivate.org, a los efectos de poder brindar soporte a desarrolladores de otras naciones.

Dentro del paquete de traducción de Pingüino Beta8, fué incluido un archivo de Texto “HOW TO” en inglés, con las instrucciones detalladas de instalación, para hacer posible su lectura por parte de la comunidad internacional de usuarios de Pingüino.

Para mas información, y como ayuda referencial a otros compañeros con necesidades de traducción de otros programas libres, les dejamos enlaces a las páginas y/o sitios web de consulta que nos resultaron de mayor utilidad en nuestro propósito:

Fuentes Referenciales y Documentales consultadas:

[1] GNU gettext en Wikipedia (Español)                          

[2] GNU gettext en Wikipedia (Inglés)

[3] Página oficial de GNU gettext (Inglés)

[4] Manual de GNU gettext (Inglés)

[5] Preguntas y Respuestas Frecuentes GNU gettext

[6] Manual de Referencia Python 2.6 – Módulo gettext

[7] Sección de Internacionalización en Wiki de wxPython

[8] Sitio Oficial de poEdit, GUI para Editar Archivos *.PO


Tutoriales en Blogs de Programadores en Español

[9] http://pyrubik.wordpress.com/2009/03/30/como-usar-gettext-multilenguaje-en-python-pygettext/

[10] http://www.miguev.net/misc/PyGettextMicroComo.html

[11] http://ukablog.codigoabierto.info/articulos/Internacionalizaci%F3n%20en%20Python%20con%20GetText.html

Filed May 2nd, 2010 under Software, IDE y Bootloader

No Comments

RSS

No comments yet.

Leave a comment

To comment on this blog you will need to log in or create an account first.