Traducir ficheiros de GNU Gettext

Este documento aborda aspectos da tradución de ficheiros de GNU Gettext («.po») non abordados na documentación xeral sobre o proceso de tradución.

Fundamentos do estándar Gettext

O estándar Gettext baséase en que o código fonte das aplicacións inclúe separadamente as súas mensaxes en inglés e as correspondentes traducións, nun ficheiro de texto independente. Posteriormente, a tradución só precisa este ficheiro (descargarase dende aquí na maioría dos casos). A extensión dos ficheiros de texto Gettext é:

  • *.pot para os ficheiros de modelo nos que se atopan as mensaxes orixinais en inglés
  • *.po para os ficheiros nos que, ademais das mensaxes orixinais, se atopan as súas correspondentes traducións

Unha vez se ten o ficheiro de texto traducido (coa extensión *.po ) este compílase co resto da aplicación e xérase un ficheiro binario *.mo que contén as mensaxes traducidas para que a aplicación as poida interpretar en tempo de execución.

A nós só nos interesará obter os modelos *.pot correspondentes a unha aplicación determinada, traducilos e gravalos coa extensión *.po e incorporar este ficheiro no proxecto traducido.

Aínda que para traducir usamos aplicacións que nos abstraen da sintaxe interna dos ficheiros de GNU Gettext, a sintaxe é relativamente sinxela, e comprendela pode resultar útil para algúns aspectos avanzados do proceso de tradución. Así que agora veremos a sintaxe básica dos ficheiros de GNU Gettext e o uso dalgunhas ferramentas para manipulalos.

Se abres un destes ficheiros poderás ver en primeiro lugar a cabeceira:

# TÍTULO DESCRITIVO da APLICACIÓN TRADUCIDA.
# Autoría da tradución <autoría@datradución.example>, ANO.
msgid ""
msgstr ""
"Project-Id-Version: Versión do aplicativo\n"
"POT-Creation-Date: 1999-08-21 08:11+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Último Tradutor <ultimo@tradutor.org>\n"
"Language-Team: Lingua <enderezo@dogrupodetradución.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: UTF-8\n"

Aquí van datos xerais sobre a tradución, como se pode ver: autoría,  datas, equipo de tradución, codificación, nome da aplicación… Todos os datos que non se verán na execución da aplicación. O resto do ficheiro consta de moitas entradas semellantes a esta:

#: src/getopt.c:582
#, c-format
msgid "%s: option '%s' is ambiguous\n" 
msgstr ""

Cada unha destas entradas consta dunha mensaxe orixinal no msgid e un campo msgstr no que ti manualmente ou a través dunha aplicación de tradución meterás a correspondente versión en galego da mensaxe. No noso caso quedaría:

#: src/getopt.c:582
#, c-format
msgid "%s: option '%s' is ambiguous\n"
msgstr "%s: a opción «%s» é ambigua\n"

Eses «%s» explícanse na documentación sobre aspectos técnicos da tradución.

Probar unha tradución

Pódese facer unha compilación do ficheiro *.po para obter un ficheiro *.mo que se poderá usar para comprobar en tempo real (executando a aplicación) a validez da tradución. Isto recoméndase se existen dúbidas de interpretación, por exemplo, ou para acurtar oracións que destrúan as proporcións dos menús, entre outras cousas (tamén se queres ter inmediatamente a versión galega instalada no teu computador, sen agardar
á publicación).

Para facer isto, has de ter instalado o paquete GNU Gettext. Nel inclúese a aplicación msgfmt, que é o que vas empregar. Seguindo coa suposición de que o paquete é o chamado ficheiro.po, para probar este paquete escribe a orde:

 msgfmt -vvv -c ficheiro.po -o /dev/null

Deste xeito, se hai algún fallo, dirache cal é, en que liña está, etc. Cando xa teñas probada a tradución, podes compilala, para instalala no teu computador e usala activamente. Para iso, executa estas dúas ordes (a segunda como root, a non ser que teñas configurado o teu computador de forma que o poidas evitar):

 msgfmt ficheiro.po -o ficheiro.mo
 mv ficheiro.mo /usr/share/locale/gl/LC_MESSAGES

Se o cartafol
/usr/share/locale/gl/LC_MESSAGES/
non existe, créao no teu computador. Despois, para empregar o novo ficheiro, escribe a orde:

 export LC_MESSAGES=gl_ES

Pódela poñer nos scripts de inicio do teu usuario (.bash_profile, .login, etc…), para non a ter que escribir cada vez que queiras empregar a versión traducida.

Actualizar un «.po» a partir dun «.pot»

Imaxina que tes o ficheiro traducido de nome ficheiro.po e queres anovalo para adaptalo ás novas versións da aplicación. Descarga o ficheiro modelo ficheiro.pot dende a páxina da aplicación. Queremos xerar un ficheiro que chamaremos ficheironovo.po que conterá a versión nova da aplicación pero que recicle, dentro do posíbel, as mensaxes antigas que xa tiveramos traducidas e sexan aínda aproveitábeis. Executaremos entón:

 msgmerge  ficheiro.po ficheiro.pot -o ficheironov.po

Xerarase un ficheironovo.po que contén todos os cambios que se fixesen durante o desenvolvemento da aplicación dende a última tradución. Neste proceso inseriranse posibelmente novas mensaxes e, asemade, aparecerán unhas mensaxes antigas marcadas coa etiqueta fuzzy (imprecisas), o que significa que a mensaxe en inglés cambiou e polo tanto precísase revisar a tradución para adaptala de novo. O resto das mensaxes reutilizaranse e non precisarán revisión.