Lihuen
RSSRSS AtomAtom

Diferencia entre revisiones de «Cómo traducir programas»

Línea 3: Línea 3:
 
Los programas que pueden traducirse sin ser modificados se dice que están internacionalizados (i18n es un [http://es.wikipedia.org/wiki/Numer%C3%B3nimo 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'')[http://es.wikipedia.org/wiki/Internacionalizaci%C3%B3n_y_localizaci%C3%B3n].
 
Los programas que pueden traducirse sin ser modificados se dice que están internacionalizados (i18n es un [http://es.wikipedia.org/wiki/Numer%C3%B3nimo 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'')[http://es.wikipedia.org/wiki/Internacionalizaci%C3%B3n_y_localizaci%C3%B3n].
  
Hay distintas herramientas para hacer las traducciones, la herramienta a elegir dependerá del formato usado por el desarrollador, en este documento hablaremos de los formatos:
+
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
 
* .po/.mo de gettext
 
*.dtd de Mozilla (aún estamos escribiéndolo)
 
*.dtd de Mozilla (aún estamos escribiéndolo)
 
* .qm/.tr de QT y KDE (aún estamos escribiéndolo)
 
* .qm/.tr 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==
 
==Gettext==
Línea 45: Línea 47:
  
 
Creamos una traducción a partir del ".pot":
 
Creamos una traducción a partir del ".pot":
[[Imagen:Gettext - Crear traducción.png|300px|thumb|Crear traducción]]
+
[[Imagen:Gettext - Crear traducción.png|300px|center|thumb|Crear traducción]]
  
 
Llenamos los detalles de la traducción a conciencia (si falta alguno de los
 
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).
 
campos va a tirar errores pero puede llegar a funcionar igual).
[[Imagen:Gettext - Opciones de la traducción.png|thumb|Opciones de la traducción]]
+
[[Imagen:Gettext - Opciones de la traducción.png|300px|center|thumb|Opciones de la traducción]]
  
 
Elegimos un nombre para la traducción, en este paso es importante poner el
 
Elegimos un nombre para la traducción, en este paso es importante poner el
Línea 58: Línea 60:
 
Para este ejemplo, dado que tuxpaint-config ya cuenta con una traducción al
 
Para este ejemplo, dado que tuxpaint-config ya cuenta con una traducción al
 
español genérica, escribiremos una para Argentina:
 
español genérica, escribiremos una para Argentina:
[[Imagen:Gettext - Guardar traducción.png|300px|thumb|Guardar traducción]]
+
[[Imagen:Gettext - Guardar traducción.png|center|300px|thumb|Guardar traducción]]
  
 
La ventana de traducción tiene varios elementos, los más básicos son el campo
 
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:
 
que muestra el texto original y el campo para escribir la traducción:
[[Imagen:Gettext - Ventana de traducción.png|300px|thumb|Ventana de traducción]]
+
[[Imagen:Gettext - Ventana de traducción.png|center|300px|thumb|Ventana de traducción]]
  
 
Por defecto el espacio para escribir es muy chico, pero se puede estirar
 
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.
 
haciendo clic en el borde señalado en la figura y arrastrando.
[[Imagen:Gettext - Ventana de traducción agrandada.png|300px|thumb|Guardar traducción agrandada]]
+
[[Imagen:Gettext - Ventana de traducción agrandada.png|300px|center|thumb|Guardar traducción agrandada]]
  
 
El siguiente paso es simplemente elegir la cadena a traducir en la parte
 
El siguiente paso es simplemente elegir la cadena a traducir en la parte
 
superior de la ventana y empezar a escribir la traducción.
 
superior de la ventana y empezar a escribir la traducción.
[[Imagen:Gettext - Ventana primer traducción.png|300px|thumb|Primer cadena traducida]]
+
[[Imagen:Gettext - Ventana primer traducción.png|300px|center|thumb|Primer cadena traducida]]
  
 
Es posible marcar una traducción como provisoria, de esa manera será fácil
 
Es posible marcar una traducción como provisoria, de esa manera será fácil
Línea 76: Línea 78:
 
la traducción en la parte superior de la ventana y hacer clic en el botón
 
la traducción en la parte superior de la ventana y hacer clic en el botón
 
indicado en la figura.
 
indicado en la figura.
[[Imagen:Gettext - Marcar como provisoria.png|300px|thumb|Marcar como provisoria]]
+
[[Imagen:Gettext - Marcar como provisoria.png|300px|center|thumb|Marcar como provisoria]]
  
 
Al guardar la traducción la lista de cadenas a traducir se reordena y se
 
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
 
muestran los textos sin traducción, seguidos de las traducciones provisorias
 
resaltadas en dorado y por último las traducciones normales.
 
resaltadas en dorado y por último las traducciones normales.
[[Imagen:Gettext - Listado ordenado.png|thumb|300px|Listado de traducciones ordenadas]]
+
[[Imagen:Gettext - Listado ordenado.png|thumb|300px|center|Listado de traducciones ordenadas]]
  
 
Al guardar la traducción se genera una versión "compilada" de la traducción
 
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
 
esta es la versión que realmente se usará, este archivo tiene una extensión
 
".mo".
 
".mo".
[[Imagen:Gettext - Archivos generados.png]]
+
[[Imagen:Gettext - Archivos generados.png|thumb|300px|center|Archivos generados al guardar]]
  
 
Si estamos traduciendo un paquete de Debian es importante eliminar este
 
Si estamos traduciendo un paquete de Debian es importante eliminar este

Revisión de 13:52 24 feb 2014

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/.tr 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.