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.