|
|
Traducción de paquetes |
|
|
Autor: linuxcpp _
URL
_
Tb ()
_
Categorias: LINUX- Utilidades
|
TRADUCCIÓN 
La traducción de programas es una tarea pesada pero interesante. Es indudable que existe una relación directa entre el número de idiomas que ofrece un software con el número de usuarios que acceden al mismo.
A continuación vamos a indicar una nociones básicas acerca de la traducción del software.
La herramienta que usaremos será gettext. Se trata de un paquete que podemos descargar fácilmente: apt-get install gettext
Para poder traducir un programa con esta herramienta debemos tener accesible el código fuente del programa en cuestión. El código fuente además debe estar preparado para usar esta herramienta, me refiero a que en el propio código fuente debe incluirse la librería <gettext.h>. Si el código fuente es C deberemos incluir las sentencias:
bindtextdomain(GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
textdomain(GETTEXT_PACKAGE);
Donde las MAYUSCULAS deben haber sido definidas en algún include.
Se puede complicar poniéndolo para que se haga con el ./configure pero lo más habitual es no complicarse y definirlo:
Ej: MAKEFILE: PACKAGE = xwine
En otros lenguajes de programación también se pueden usar las opciones de gettext, pero las sentencias para activarlas serán algo distintas.
Además en el código fuente se deberán marcar aquellas cadenas de texto que vayamos a dar la posibilidad de traducir; para ello en vez de poner una cadena de tipo "Hola", deberíamos ponerla de forma: _("Hola")
Lo que debemos hacer es extraer del código fuente aquellas cadenas de texto que se pueden traducir (las que hayan sido marcadas). El comando que usaremos es el siguiente, el cual crea un fichero con nombre: nombre_programa.pot que contendra dichas cadenas de texto. El comando a usar es:
xgettext
Cuando nos descargamos el código fuente de un paquete con el comando apt-get source nos encontraremos en muchas ocasiones con una carpeta con nombre po. En él se encuentran ficheros con extensión .po (quizás también .gmo) y posiblemente un fichero .pot. El fichero con extensión .pot es el original, con las cadenas de texto a traducir y que podríamos usar como base para comenzar una nueva traducción; y los ficheros con extensión .po contienen la traducción en distintos idiomas.
La estructura de estos ficheros son parecidas a estas:
#: ../data/gedit.desktop.in.in.h:1
msgid "Edit text files"
msgstr "Edite archivos de texto"
Donde msgid contiene la cadena de texto original extraida del código fuente, y la cadena msgstr la traducción de la misma. Es una tarea pesada, pero si queremos traducir un programa a un nuevo idioma debemos partir de un fichero vacío (el .pot) e ir traduciendo todas las cadenas de texto que aparecen.
Una vez hecha la traducción, y teniendo completo el nuevo fichero .po (cuyo nombre hace referencia al nuevo idioma), deberemos compilarlo generando un archivo con extensión .gmo. Para esta compilación usaremos la herramienta msgfmt:
msgfmt es.po -o es.gmo
Para que esta traducción tuviera efecto en nuestro programa, este fichero con extensión .gmo debe ser movido a la ruta correspondiente y con el nombre correspondiente. Por ejemplo, para el paquete gedit y con una traducción a español (es), lo primero sería cambiar el nombre del archivo con extensión .gmo a: nombre_programa.mo (gedit.mo), y deberá ser llevado a la ruta /usr/share/locale/es/LC_MESSAGES:
cp es.gmo /usr/share/locale/es/LC_MESSAGES/gedit.mo
Existe una variable de entorno de nombre $LANG que nos dice el idioma de nuestro sistema, y que una vez que ejecutemos cualquier aplicación intentará ver si existe una traducción para ese idioma, y de ser así se mostrará con la traducción correspondiente.
Se puede cambiar el valor de esta variable de entorno con el comando export. Ej: export $LANG=de (a idioma alemán).
Notas generales de traducción:
- Si al traducir una palabra le pones el carácter _ delante de una letra, está letra aparecerá subrayada. Ej:
msgid "_Dec"
msgstr "_DecTraducido" // <-- La D apareceria subrayada
- La aplicación kbabel (podemos descargarla haciendo apt-get install kbabel) comprueba si la traducción ha sido correcta, dudosa, etc.
Existe un paquete llamado linguist (que podemos descargar haciendo apt-get install qt3-linguist), que permite traducir programas basados en las librerías qt. La carpeta que debemos buscar en el código fuente se llama translation, y las extensiones de los archivos a traducir son .ts
Estos ficheros se pueden traducir manualmente desde un editor pero también se puede usar el propio programa linguist. Los archivos compilados una vez finalizada la traducción tienen extensión .qm. Para estos archivos no existe una ruta definida sino que cada aplicación tiene su propia ruta, así por ejemplo existe la ruta /usr/share/mysqlcc/translation a la cual deberemos copiar el archivo .qm creado.
En resumen, si desde el momento de programación seguimos las directivas adecuadas, de tal forma que podamos extraer las cadenas de texto traducibles con el paquete gettext más adelante, la posibilidad de traducir el programa a numerosos idiomas será tan fácil como editar simples ficheros.
Para cualquier duda o consulta dejen un comentario.
|
|
Comentarios (0)
Menéame
Barrapunto
Technorati
Google Bookmarks
Fresqui
del.icio.us
VOTACIÓN:
(Núm. votos: 3)









Autor: 
Categorias: 