Localizer

Juan David Ib��ez Palomar Palomar

Copyright (C) 2002 Juan David Ib��ez Palomar, [email protected]. Se otorga permiso para copiar, distribuir y/o modificar este documento bajo los t�rminos de la Licencia de Documentaci�n Libre GNU, Versi�n 1.1 o cualquier otra versi�n posterior publicada por la Free Software Foundation. No habiendo Secciones Invariantes, ni Textos de Portada ni Textos de Contra Portada. Puede consultar una copia de la licencia en: http://www.gnu.org/copyleft/fdl.html

Resumen

Localizer es una herramienta para la construcci�n de aplicaciones web en varios idiomas, trata tanto la internacionalizaci�n de las interfaces de usuario como la gesti�n de contenido multiling�e.

Cien por cien software libre, su desarrollo comenz� en una peque�a universidad espa�ola hace ya m�s de un a�o. Desde entonces ha seguido creciendo hasta alcanzar cierta popularidad.

Ahora se abre un nuevo per�odo para este producto en el cual el objetivo es llenar un vac�o en el mundo del software libre, dentro de la industria de la localizaci�n, tradicionalmente dominada por soluciones propietarias.


Tabla de contenidos

1. Introducci�n
1.1. Or�genes, el proyecto LLEU
1.2. Esto es software libre
1.3. Un producto Zope
1.4. Contenido del art�culo
2. Internacionalizaci�n y localizaci�n
3. Productos
3.1. Gettext
4. Sitios web
4.1. El cat�logo de mensajes
4.2. Contenido
4.3. Im�genes, fechas, etc..
5. Negociaci�n de idioma
6. Unicode
7. Extensibilidad
8. Ejemplos
8.1. LLEU
8.2. EuroPython.org
9. Conclusiones
10. Referencias

1. Introducci�n

Localizer se utiliza desde Jap�n a Canad�, pasando por China, Rusia, Kazakstan, Ucrania, Francia, Espa�a, Alemania, B�lgica, etc..

Localizer es de hecho la herramienta de referencia para la construcci�n de aplicaciones web multiling�es en la comunidad Zope. Proporciona servicios que van desde la creaci�n p�ginas web en varios idiomas hasta la gesti�n de contenido multiling�e o la negociaci�n de idioma.

1.1. Or�genes, el proyecto LLEU

El desarrollo del producto Localizer comenz� a principios del a�o 2001 en la Universidad Jaume I de Castell�n (Espa�a). Se realiz� en el marco del proyecto LLEU, con el objetivo de proporcionar la infraestructura necesaria para construir el sitio web de dicho proyecto en los dos idiomas oficiales de la universidad, el Catal�n y el Castellano.

El proyecto LLEU se present� en el III Congreso Hispalinux.

1.2. Esto es software libre

Localizer es cien por cien software libre, se distribuye bajo los t�rminos y condiciones de la licencia GNU General Public License.

Su desarrollo sigue activo despu�s de m�s de un a�o y medio, en torno a �l se ha formado una peque�a comunidad de usuarios que contribuyen con ideas, documentaci�n, parches, etc.. En el momento de escribir este art�culo hab�an 45 personas suscritas a la lista de correo de Localizer y se hab�an realizado m�s de 800 "downloads" del producto.

1.3. Un producto Zope

Localizer est� basado en el servidor de aplicaciones web Zope, el cual tambi�n es software libre. Tanto Localizer como Zope est�n escritos, principalmente, en el lenguaje de programaci�n Python.

Zope es un entorno flexible que puede ser f�cilmente extendido mediante m�dulos. Dichos m�dulos reciben el nombre de productos, Localizer es uno de esos productos.

Existen numerosos productos Zope que tratan de resolver el problema de la internacionalizaci�n y localizaci�n, de entre todos ellos Localizer se ha convertido en el m�s popular, pr�cticamente sin competencia. Como ejemplo, Localizer fue utilizado para la construcci�n del sitio web de EuroPython, el cual se cre� con motivo del primer congreso europeo en torno al lenguaje de programaci�n Python.

1.4. Contenido del art�culo

El presente art�culo se divide en dos partes, en las primeras secciones se mostrar�n las diferentes funcionalidades que proporciona Localizer: los servicios para el desarrollo de productos Zope y de sitios web multiling�es, la negociaci�n de idioma, el soporte de Unicode y su habilidad o capacidad de ser f�cilmente extendido.

A continuaci�n se mostrar�n algunos de los sitios web que han sido realizados con Localizer. Para terminar con las conclusiones del art�culo.

2. Internacionalizaci�n y localizaci�n

Antes de empezar con el producto conviene explicar r�pidamente dos conceptos fundamentales.

Internacionalizaci�n es el proceso mediante el cual una aplicaci�n monoling�e, sin capacidad para mostrarse en varios idiomas, se transforma en una aplicaci�n capaz de mostrar sus mensajes en diferentes idiomas, mostrar las fechas en los diferentes formatos locales, etc.. Es decir, se trata de todas las modificaciones que precisa un software para poder ser multiling�e.

Localizaci�n es el proceso por el cual se adapta una aplicaci�n a los requerimientos locales de una determinada regi�n. Por ejemplo, se proporcionan las traducciones de los mensajes, se especifica en qu� formato se deben mostrar las fechas, etc..

La internacionalizaci�n es un paso previo a la localizaci�n que se realiza una sola vez, mientras que la localizaci�n se realiza una vez por idioma.

Como an�cdota, comentar que existen dos abreviaturas para estos t�rminos, la palabra internacionalizaci�n suele escribirse como "i18n" y la palabra localizaci�n como "l10n". Ambas abreviaturas se construyen del mismo modo (a partir del t�rmino ingl�s); la primera letra de la abreviatura es la primera letra del t�rmino, de forma similar para la �ltima letra, el n�mero que hay entre ambas es el n�mero de caracteres que hay entre la primera y �ltima letra del t�rmino.

3. Productos

Localizer no solamente proporciona facilidades para la construcci�n de sitios web multiling�es (facilidades que veremos m�s adelante), tambi�n ayuda a desarrollar productos Zope en varios idiomas.

Un ejemplo es el propio Localizer, todas sus interfaces est�n internacionalizadas y localizadas en varios idiomas (espa�ol, japon�s, alem�n, vasco, h�ngaro, etc..).

La soluci�n proporcionada por Localizer para esta tarea est� construida en torno a las utilidades Gettext de GNU, las cuales son el est�ndar de hecho en la comunidad del software libre. Proyectos de considerables dimensiones, como GNOME y KDE, las utilizan.

3.1. Gettext

En Gettext se utilizan unas marcas especiales en el c�digo fuente que identifican los mensajes que deben ser traducidos. A�adir estas marcas representa el paso conocido como internacionalizaci�n. La localizaci�n se realiza en varios pasos:

  • El c�digo fuente se analiza utilizando un programa de l�nea de comandos, el cual genera un fichero de texto con los mensajes a traducir, estos ficheros reciben el nombre de ficheros PO.

  • Los ficheros PO generados (uno por idioma) son editados por los traductores humanos, quienes a�aden las traducciones. Para esta tarea se puede utilizar cualquiera de los editores que existen (Emacs, KBabel, etc..).

  • Finalmente, los ficheros PO se compilan para generar los ficheros binarios que se utilizar�n en tiempo de ejecuci�n. Estos ficheros binarios reciben el nombre de ficheros MO.

Las marcas utilizadas en el c�digo fuente son en realidad llamadas a una funci�n que recibe un mensaje y busca y devuelve su traducci�n a partir de los ficheros MO.

El uso de Gettext permite a Localizer aprovechar la experiencia y las herramientas desarrolladas en torno a �l, esto incluye sofisticados editores de ficheros PO (para los traductores), soporte de formas plurales, etc..

4. Sitios web

Zope proporciona una interfaz web que puede ser usada para construir aplicaciones a trav�s de la web. Esta interfaz es conocida como las pantallas de gesti�n, las cuales permiten gestionar los diferentes tipos de objetos que pueden usarse en Zope (plantillas, carpetas, im�genes, ficheros, etc..).

La mayor�a de los productos Zope todo lo que hacen es proporcionar nuevos tipos de objetos a los ya disponibles en la distribuci�n est�ndar. Estos objetos incluyen sus propias pantallas de gesti�n, las cuales se integran en el resto del sistema.

Localizer a�ade cuatro nuevos tipos de objetos, los cuales incluyen sus propias pantallas de gesti�n. Estos objetos proporcionan mecanismos para internacionalizar un sitio web, para gestionar contenido multiling�e o para personalizar la pol�tica de negociaci�n de idioma. De este modo Localizer permite la construcci�n de sitios web multiling�es a trav�s de la web. Ahora veremos con mayor detalle estos cuatro tipos de objetos.

4.1. El cat�logo de mensajes

El primer objeto que vamos a ver es el cat�logo de mensajes, el cual, c�mo su nombre sugiere, sigue una aproximaci�n similar a la de Gettext. El cat�logo de mensajes es una base de datos que almacena mensajes y sus traducciones, con una interfaz web para gestionarlas. Para obtener las traducciones proporciona una interfaz similar al de Gettext.

Para gestionar el cat�logo, adem�s de la interfaz web, es posible exportar e importar su contenido a y desde ficheros PO, de este modo se pueden utilizar sofisticados editores gr�ficos. Y todav�a hay m�s, el cat�logo de mensajes es accesible desde FTP, esto significa que los mensajes se pueden editar directamente utilizando un editor que soporte FTP, por ejemplo Emacs.

Los cat�logos de mensajes se utilizan normalmente para internacionalizar la interfaz de usuario, por ejemplo el sistema de navegaci�n, los formularios, etc..

4.2. Contenido

El contenido tiene unas necesidades diferentes y requiere por la tanto una soluci�n diferente. Por ejemplo, el contenido debe ser indexado, de tal modo que se puedan realizar b�squedas sobre �l; tambi�n debe ser posible utilizar herramientas de "workflow" para gestionarlo. Para satisfacer estos y otros requerimientos Localizer proporciona el objeto "Local Content".

La diferencia clave entre la soluci�n para las interfaces y la soluci�n para el contenido es que en el primer caso las traducciones se almacenan en una base de datos separada (el cat�logo de mensajes) a la cual se accede cada vez que se precisa una traducci�n; sin embargo, en los objetos de contenido local las traducciones se almacenan en el mismo objeto que el texto original.

4.3. Im�genes, fechas, etc..

Todo lo que hemos visto hasta ahora se refiere al texto, bien para las interfaces o para el contenido. Pero hay m�s que texto en un sitio web, por ejemplo, �qu� sucede si se precisa localizar una imagen o mostrar una fecha en el formato local?. Para estos prop�sitos Localizer proporciona el objeto "Local Folder", el cual es una soluci�n gen�rica para localizar cualquier cosa.

B�sicamente es una carpeta o directorio que puede almacenar diferentes versiones de cualquier tipo de objeto Zope y proporcionar la versi�n correcta (bas�ndose en las reglas de negociaci�n de idioma) cuando se requiere. Esta soluci�n puede utilizarse para localizar im�genes, fechas, etc..

5. Negociaci�n de idioma

En un sitio web multiling�e, cada vez que el cliente solicita una p�gina web el servidor debe decidir en qu� idioma servirla, esto se conoce como la negociaci�n de idioma.

Por defecto un sitio web basado en Localizer tan solo considerar� la configuraci�n del navegador (la cabecera Accept-Language del protocolo HTTP) para elegir el idioma.

Pero el producto Localizer proporciona una clase (llamada tambi�n Localizer) que permite personalizar la pol�tica de negociaci�n de idioma.

Esta clase proporciona varios m�todos que ayudan a realizar las tareas m�s comunes, por ejemplo hay uno que almacena el idioma preferido por el usuario en una "cookie", y hay otro que muestra una caja de selecci�n que permite cambiar dicha "cookie". Tambi�n hay otro m�todo que permite especificar el idioma en la url, la mejor soluci�n para evitar problemas de cache y para los motores de b�squeda.

El desarrollador tambi�n puede escribir sus propios m�todos para implementar la pol�tica que mejor satisfaga sus requerimientos.

Esta configuraci�n o implementaci�n de la pol�tica de negociaci�n de idioma se realiza en el objeto Localizer, normalmente solo hay uno en cada sitio web. De este modo, es posible cambiarla en cualquier momento sin afectar al resto del sitio web, es decir, la negociaci�n de idioma es ortogonal al resto del sistema.

Esto tambi�n significa que los desarrolladores de productos Zope ni precisan ni deben preocuparse por la pol�tica de negociaci�n de idioma, ya que es algo espec�fico a cada sitio web.

6. Unicode

El soporte de Unicode es una pieza central de Localizer.

El lenguaje de programaci�n Python proporciona un tipo de cadenas de texto llamadas Unicode, las cuales ocultan los detalles de implementaci�n relativos al sistema de codificaci�n (en ingl�s "encoding"). Localizer utiliza este tipo de cadenas para almacenar el texto, esto simplifica considerablemente el trabajo del desarrollador.

Cuando las cadenas de texto Unicode se serializan, por ejemplo cuando el servidor env�a una p�gina web al cliente, se debe elegir un sistema de codificaci�n. Qu� sistema en concreto utilizar es una elecci�n del desarrollador. Si la aplicaci�n requiere combinar idiomas de diferentes alfabetos el sistema de codificaci�n a utilizar deber�a ser UTF-8 o alg�n otro de la familia Unicode (UTF-16, etc..).

Como ejemplo, las pantallas de gesti�n de Localizer utilizan UTF-8. De hecho est�n traducidas al japon�s y no hay ning�n inconveniente en mezclar textos de diferentes idiomas.

7. Extensibilidad

Hemos visto r�pidamente el conjunto de funcionalidades de Localizer que no requieren conocimientos de programaci�n y que pueden usarse para construir sitios web multiling�es sin una gran complejidad.

Pero eso no es todo, los desarrolladores pueden crear sus propios productos Zope que extienden Localizer utilizando la interfaz de programaci�n que proporciona para estos prop�sitos, por ejemplo para construir objetos multiling�es con caracter�sticas especiales.

De hecho, existen ya varios productos. Por ejemplo, los productos CMFLocalizer y PersistentTranslationService a�aden varias funcionalidades relativas a otras tecnolog�as Zope (CMF y ZPT). Por otro lado, el producto Base18 explora nuevas estrategias para gestionar contenido multiling�e.

8. Ejemplos

En esta secci�n veremos brevemente algunos sitios web que han sido construidos con Localizer, y qu� es lo que tienen de particular.

8.1. LLEU

El proyecto LLEU tenia por objetivo construir un sistema de informaci�n para los estudiantes de la Universidad Jaume I de Castell�n. Dicho sistema deb�a estar basado en la web, es decir, deb�a concretarse en un sitio web.

La Universidad de Castell�n se sit�a en una regi�n biling�e, tiene dos idiomas oficiales, el Catal�n y el Castellano. En consecuencia el sitio web deb�a estar en ambos idiomas. Para conseguirlo, dada la ausencia de las herramientas necesarias, se desarroll� el producto Localizer, el cual proporcion� la infraestructura requerida.

Como caracter�sticas particulares de este sitio web destacar�a:

  • Flujos de trabajo (en ingl�s "workflows") de los documentos sensibles a los diferentes idiomas, de tal modo que cada versi�n puede encontrarse en un estado diferente. Por ejemplo la versi�n en Catal�n podr�a estar revisada y lista para ser p�blica, pero la versi�n en Castellano podr�a estar todav�a vac�a.

    Junto con este sistema se inclu�an interfaces de estad�sticas que permit�an desde un solo punto conocer el estado general del sitio web y de su contenido.

  • Traducci�n autom�tica. Gracias a la universidad de Alicante (proyecto Internostrum), se pudo ofrecer un sistema de traducci�n autom�tica entre el Castellano y el Catal�n, esto permiti� reducir considerablemente los costes ya que ambos idiomas son relativamente parecidos y la herramienta proporciona traducciones bastante buenas que tan solo han de ser revisadas.

8.2. EuroPython.org

Este sitio web fue creado como el portal de la primera conferencia europea sobre el lenguaje de programaci�n Python, celebrada en Charleroi en Junio del a�o 2002.

Lo que tiene de particular es que inicialmente se encontraba en un solo idioma, ingl�s, que fue posteriormente convertido en multiling�e utilizando Localizer. Es decir, no se construy� como una aplicaci�n multiling�e desde el principio, si no que fue un paso posterior.

Otro aspecto significativo era el hecho de que el sitio web fue desarrollado por m�ltiples personas de tal modo que diferentes secciones del sitio utilizaban diferentes herramientas y ten�an un estilo diferente. Adem�s, el sitio web estaba ya en producci�n cuando el proceso de internacionalizaci�n comenz�. Todo esto supon�a un reto para Localizer, un reto que super� con �xito.

9. Conclusiones

Como conclusi�n comentar que el producto Localizer sigue bajo activo desarrollo. Existen varias l�neas de desarrollo.

En primer lugar, nuevas versiones de Zope y de otras herramientas y tecnolog�as relacionadas ofrecen nuevas posibilidades que Localizer debe explotar. En consecuencia existen varios proyectos para a�adir nuevas funcionalidades, por ejemplo soporte de la sintaxis espec�fica de internacionalizaci�n del lenguaje ZPT. En ocasiones este trabajo consiste en integrar funcionalidades ya presentes en los diferentes productos basados en Localizer.

Sin embargo, la l�nea de desarrollo principal consiste en posicionar a Localizer como una soluci�n competitiva con respecto a las soluciones propietarias. Por ejemplo algunas de las funcionalidades a implementar son:

  • Servicios de flujos de trabajo y de gesti�n versiones gen�ricos, no espec�ficos para la gesti�n de contenido multiling�e, pero capaces de responder a las necesidades complejas de estos sistemas.

  • Extracci�n de frases dentro de textos largos, alimentaci�n de una base de datos externa con dichas frases, utilizaci�n de "fuzzy matching" o de otro mecanismo m�s complejo para obtener traducciones autom�ticas, desarrollo de interfaces sofisticados para los traductores. En definitiva, proporcionar las funcionalidades t�picas de los sistemas de memorias de traducci�n.

  • Soporte de formatos de ficheros, como HTML, PDF, etc.. De este modo los servicios de gesti�n de contenidos podr�an utilizarse no solamente en ficheros de texto simples, si no tambi�n en textos con formato.

  • Implementaci�n de est�ndares como TMX, XLIFF, etc..

Finalmente, la �ltima l�nea de desarrollo consiste en separar las partes de Localizer que no dependen de Zope en un paquete Python, exponiendo de este modo los servicios que Localizer proporciona a una comunidad m�s grande. Del mismo modo este producto podr�a inspirar o influir directamente a otros esfuerzos similares dentro de lenguajes o comunidades diferentes a la del lenguaje de programaci�n Python y el servidor de aplicaciones web Zope.

Pero sin duda lo m�s importante es consolidar la comunidad en torno a Localizer, involucrando a m�s personas en el desarrollo del producto, sentando de este modo unas s�lidas bases para llevar adelante los desarrollos arriba mencionados.

10. Referencias

  1. El sitio web de Localizer, http://www.localizer.org

  2. La Universitat Jaume I de Castell�n, http://www.uji.es

  3. El proyecto LLEU, http://uji2001.lleu.org

  4. La licencia GNU GPL, http://www.gnu.org/licenses/licenses.html\#GPL

  5. El servidor de aplicaciones web Zope, http://www.zope.org

  6. El lenguaje de programaci�n Python, http://www.python.org

  7. El portal EuroPython, http://www.europython.org

  8. Las herramientas GNU Gettext, http://www.gnu.org/software/gettext/

  9. El producto CMFLocalizer, http://zope.org/Members/fafhrd/CMFLocalizer

  10. El producto PersistentTranslationService, http://www.zope.org/Members/efge/PersistentTranslationService

  11. El producto Base18, http://www.nexedi.org/software/Base18.stx

  12. El sistema de traducci�n Internostrum, http://www.internostrum.com/

  13. El est�ndar TMX, http://www.lisa.org/tmx/

  14. El est�ndar XLIFF, http://www.oasis-open.org/committees/xliff/documents/xliff-specification.htm