03 diciembre 2015

Como traducir programas en GNU/Linux

Hare que negras sensaciones te recorran el espinazo
Si estas del lado del mal, eres amigo mio
Observa el destello de la luz blanca
mientras desgarro la noche
Pues si el bien esta a la izquierda
yo me situo a la derecha
Hells Bells - AC/DC

Algunos de los traductores usan programas como Lokalize, casi automagico, o quizas tambien Poedit, que es muy bueno.

Basicamente es abrir el archivo .pot del programa a traducir (muchas veces simplemente aparece como .po, es indistinto realmente), y generar uno nuevo con los contenidos traducidos. Extremadamente simple y hermoso es colaborar con el Software Libre.

Voy a explicarlo con Poedit, que es un poco mas engorroso que Lokalize:

Ir al menú Archivo y seleccionar "Nuevo catálogo de archivo POT".
Así abrir el archivo .pot y empezar a traducir.
Al guardar el archivo traducido automáticamente se compila en un archivo binario .mo
Fin de la traduccion.

Detalle importante, si encontras dos llaves ({}) o un "porciento" seguido por una "s" (%s) en el archivo original, estos se deben mantener en la traducción. Estos "caracteres especiales" son símbolos que el programa utiliza para sustituir texto. Por ejemplo, si ves esto:

"Centrux versión {}" o "Centrux versión %s"

El programa sustituirá a "{}" o "%s" con el número de versión actual del programa.


Traduciendo desde la Consola (o el ultimo refugio de un tramposo)

No todos necesariamente queremos (o tenemos a mano para) traducir desde un entorno grafico, al margen que esta forma siempre esta disponible, independientemente de la arquitectura de la que nos dispongamos a usar.

Debemos tener instalado gettext (probablemente ya esté instalado junto con la instalacion estandar de Slackware):

[root@gostir etc]# slapt-get -i gettext


Ahora copia el archivo .pot en el directorio actual:

vampii@gostir:[~]$ cp /usr/share/centrux/locale/centrux.pot ./centrux.po


Por lo general en los archivos traducidos se cambia el nombre con una extensión .po, pero no afecta en nada si no lo cambias. Ahora edita el archivo con tu editor de texto favorito. El archivo se debe parecer como así:


La primera línea que debemos tener en cuenta es representada como la línea 16. Es necesario cambiar el tipo de codificación. Probablemente sea UTF-8, por lo que cambie esta línea:
"Content-Type: text/plain; charset=CHARSET "

A esto:
"Content-Type: text/plain; charset=UTF-8 "

Ahora estamos listos para empezar a traducir. A continuación veras las secciones con los campos "msgid" y "msgstr".
El campo llamado "msgid" es el texto original del software. "msgstr" esta en blanco.
Traducimos el texto del campo "msgid" y lo escribimos en el campo "msgstr".


Cuando finalizamos, guardamos y cerramos. Ahora solo falta compilar el binario.


vampii@gostir:[~]$ msgfmt centrux.po -o centrux.mo


Este archivo binario lo copiamos en la carpeta llamada "locale" en el directorio de Centrux. Pero primero hay que crear un par de sub-directorios.
Primero tenes que crear un sub-directorio de su idioma. Por ejemplo, si estás traduciendo al español, tenes que crear el directorio "es" (Si la traducción es específica de un país podes utilizar directamente el código de país en el nombre de archivo: "es_AR" para Argentina). Después dentro de la carpeta "es", creas una carpeta llamada LC_MESSAGES:

vampii@gostir:[~]$ mkdir -p /usr/share/cetrux/locale/es/LC_MESSAGES

(en el ejemplo, creamos todo en un solo comando)

Ahora copiamos el archivo .mo en ese directorio:

vampii@gostir:[~]$ cp centrux.mo /usr/share/centrux/locale/es/LC_MESSAGES


¡Listo! Ya está todo hecho. Ahora ejecuta el software para verlo traducido.

El texto mostrado puede cambiar en futuras versiones, y los archivos XXX.po traducidos pueden llegar a quedar obsoletos. Si queres actualizar un archivo .po existente podes hacer lo siguiente: Obtene una copia del archivo .po más reciente y utiliza el siguiente comando para actualizar la antigua traducción:

vampii@gostir:[~]$ msgmerge -U centrux.po centrux.pot



Opcionalmente podes utilizar el argumento "--lang" para configurar el idioma del archivo .po de salida:

vampii@gostir:[~]$ msgmerge -U --lang=es_AR centrux.po centrux.pot

¡Que te diviertas!