Lihuen
RSSRSS AtomAtom

Cómo traducir programas

Traducir un programa no implica modificar su código y no es necesario saber programar para traducir un programa, cualquier persona puede hacerlo típicamente solamente hace falta saber inglés y conocer el idioma al cuál se va a traducir.

Los programas que pueden traducirse sin ser modificados se dice que están internacionalizados (i18n es un numerónimo de internationalization). Las adaptaciones a una región de un programa como puede ser una traducción se llaman localizaciones (L10n es un numerónimo de localization)[1].

Hay distintas herramientas para hacer las traducciones, la herramienta a elegir dependerá del formato usado por el desarrollador, en este documento se describe como editar los formatos:

  • .po/.mo de gettext
  • .dtd de Mozilla (aún estamos escribiéndolo)
  • .qm/.ts de QT y KDE (aún estamos escribiéndolo)

Nota: Esta no es una guía de como escribir un programa internacionalizado, sino que es una guía de como traducir (localizar) un programa que ya tiene soporte de internacionalización.

Gettext

La mayoría de los programas en GNU/Linux se suelen traducir con usando biblioteca gettext del proyecto GNU.

¿Cómo saber si usa Gettext?

Hay varias formas de saber si un programa utiliza esta biblioteca.

  • Si el programa está instalado se pueden buscar su archivo .mo, típicamente

está en:

/usr/share/locale/{idioma}/LC_MESSAGES/{nombre_programa}.mo

o si el paquete no fue instalado con apt-get en:

/usr/local/share/locale/{idioma}/LC_MESSAGES/{nombre_programa}.mo

Donde idioma es la abreviatura de algún idioma, por ejemplo: es, es_AR, en o en_US.

  • Si se dispone del código fuente del programa, el mismo debería tener archivos

con la extensión .po para los distintos idiomas.

¿Cómo lo traduzco?

Existen distintos utilitarios para traducir estos programas, el que utilizamos en el grupo Lihuen es poedit.

Lo primero es encontrar un archivo con extensión .pot, este archivo contiene todos los strings a traducir. El archivo .pot se llama "template" y generalmente viene junto con el código fuente del programa o se puede generar automáticamente a partir del mismo.

Lamentablemente la forma de generar el .pot varía mucho de programa en programa comúnmente hay un script para generarla o un target de Makefile.

Veamos un ejemplo haciendo una traducción de tuxpaint-config, esta herramienta tiene un archivo pot en:

src/po/tuxpaint-config.pot

Creamos una traducción a partir del ".pot":

Crear traducción

Llenamos los detalles de la traducción a conciencia (si falta alguno de los campos va a tirar errores pero puede llegar a funcionar igual).

Opciones de la traducción

Elegimos un nombre para la traducción, en este paso es importante poner el nombre correcto, por ejemplo si queremos escribir una traducción genérica al español debemos nombrar el archivo "es.po", para una traducción al español orientada a la Argentina el nombre sería "es_AR.po".

Para este ejemplo, dado que tuxpaint-config ya cuenta con una traducción al español genérica, escribiremos una para Argentina:

Guardar traducción

La ventana de traducción tiene varios elementos, los más básicos son el campo que muestra el texto original y el campo para escribir la traducción:

Ventana de traducción

Por defecto el espacio para escribir es muy chico, pero se puede estirar haciendo clic en el borde señalado en la figura y arrastrando.

Guardar traducción agrandada

El siguiente paso es simplemente elegir la cadena a traducir en la parte superior de la ventana y empezar a escribir la traducción.

Primer cadena traducida

Es posible marcar una traducción como provisoria, de esa manera será fácil encontrarla en el futuro para revisarla, para esto hay que seleccionar la traducción en la parte superior de la ventana y hacer clic en el botón indicado en la figura.

Marcar como provisoria

Al guardar la traducción la lista de cadenas a traducir se reordena y se muestran los textos sin traducción, seguidos de las traducciones provisorias resaltadas en dorado y por último las traducciones normales.

Listado de traducciones ordenadas

Al guardar la traducción se genera una versión "compilada" de la traducción esta es la versión que realmente se usará, este archivo tiene una extensión ".mo".

Archivos generados al guardar

Si estamos traduciendo un paquete de Debian es importante eliminar este archivo ".mo" antes de invocar a dpkg-buildpackage o este comando fallará notificando que no puede representar los cambios de un archivo binario.

Para programas que se compilen o empaqueten de otra forma este procedimiento puede variar, puede ser completamente automático, puede requerir que el archivo ".mo" esté presente o requerir que se edite alguna configuración o script para admitir el nuevo idioma.

Qt Linguist

Otro formato posible para los archivos de idioma es con extensión .ts.

¿Cómo saber si usa traducción con archivos .ts?

En general si el programa está escrito con las librerías qt, lo m?as probable es que esté usando este tipo de archivos. Si se dispone del código fuente del programa, este cuenta con el directorio lang y dentro del mismo existe un archivo .ts por cada idioma traducido, por ejemplo: hotshots_cs.ts hotshots_fr.ts hotshots_pl.ts

Si el programa ya está instalado, los archivos traducidos se encuentran en el directorio: /usr/share/hotshots/locale/ pero con extensión .qm, lo cual es el archivo de idioma pero binario, es decir que no se puede visualizar directamente. Por lo tanto solamente podemos traducir a través del archivo de idioma en el código fuente de la aplicación.

¿Cómo lo traduzco?

La herramienta que permite trabajar con este tipo de archivo es Qt Linguist, generado en base a la librería qt. Las herramientas de Qt muestra información contextual de donde se encuentra la frase o palabra a traducir para comprender el significado exacto. Como vemos en la figura herramienta gráfica Qlinguistic cuenta con varias partes:

Aplicación
  1. Es la lista de secciones disponibles para la traducción.
  2. Dentro de una sección determinada en la parte 2 nos muestra la lista de palabras o frases a traducir.
  3. En algunos casos si las palabras a traducir se encuentran dentro de una ventana gráfica te muestra para tener una idea más exacta de su significado.
  4. Espacio para escribir la traducción correspondiente.

Una vez que empezamos a generar las traducciones nos muestra con un signo de admiración (1) los cambios no guardados, una vez que estamos seguros, para finalizar utilizamos la herramienta marcada con (2).

Modificando

El archivo modificado se guarda en el mismo directorio con la misma extensión. Esta misma herramienta permite traducir otros tipos de archivos como .po, . qph, .xlf, etc.