Converter .po e .ts a .tmx

From Proxecto Trasno

Este como está disponible en Flag es.png castellano en el wiki de Galpon.
This HowTo is available in Flag en.png english in the in this wiki.


Traballo básico[edit]

Converter un só ficheiro .po a .tmx[edit]

Neste caso empregaremos as ferramentas «translate-toolkit», para elo, se non dispomos delas, teremos que instalalas xunto coas de desenvolvemento «python» e «python-dev»

  • En Debian:
apt-get install translate-toolkit python python-dev

É tan sinxelo como executar, nun terminal, a seguinte orde:

	po2tmx ficheiro.po -l gl ficheiro.tmx

	   ↓        ↓       ↓  ↓      ↓
	   ↓        ↓       ↓  ↓      nome que terá o ficheiro «.tmx» resultante 
	   ↓        ↓       ↓  código do idioma final (como parámetro da opción -l)           
	   ↓        ↓       opción (obrigatoria) para indicar o idioma final (do .tmx) 
	   ↓        nome do ficheiro «.po» orixinal
	   orde de conversión po a(to) tmx


Traballando con ficheiros .ts como orixinais[edit]

Ás veces atopamonos con que os ficheiros de tradución teñen o formato de QtLinguist, o formato .ts. Este formato, para poder convertelo a TMX debe pasar antes polo formato .po (eu non coñezo outro método fiábel).

Normalmente os que traballamos con ese formato, xa temos instalado o Qt 4 Linguist de non ser así, para seguir estes pasos terás que instalalo. En debian:

apt-get install qt4-dev-tools.

Para converter un ficheiro .ts a un ficheiro .po abrimos nun terminal o cartafol no que temos o ficheiro .ts, e nel (no terminal) executamos:

lconvert -i ficheiro.ts -o ficheiro.po

Con isto obteremos un ficheiro .po, mais debemos ter coidado cos seguintes pasos, o máis importante non abrilo con POEdit, xa que faise un lío coa codificación UTF-8 e veremos que os tiles e demais están en ascii. Vaiamos a modo e fagamos o seguinte:

  • Abrimos o ficheiro cun editor de texto simple como Vi(m), Nano, Leafpad, Gedit, Kate. etc, no principio, onde as cabeceiras, veremos esta entrada:
#, fuzzy
msgid ""
msgstr ""
"X-Virgin-Header: remove this line if you change anything in the header.\n"
"X-Language: gl\n"
  • Substituimos/borramos esas liñas para que nos queden así:
#, fuzzy
msgid ""
msgstr ""
""
  • Unha vez gardado, poderemos abrilo co Virtaal co que xeraranse as cabeceiras oportunas (supoño que outros aplicativos de CAT como Lokalize ou OmegaT tamén o farán, mais non puiden comprobalo)
  • Temos outra alternativa, modificar directamente co editor de texto simple e substituir por:
#, fuzzy
msgid ""
msgstr ""  
"Last-Translator: Pepe Perez <pepe@perez.com>\n"
"Language-Team: proxecto@trasno.net\n"
"Language: gl\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
Con isto xa poderemos abrilo coa ferramenta CAT que nos pete, para axustar calquera dos datos das cabeceiras.
  • A partires de aquí tratámolo como un ficheiro .po calquera.


Converter varios ficheiros .po a un só ficheiro .tmx[edit]

Empregamos como exemplo a obtención dun ficheiro «.tmx» que conteña as traducións do Ubuntu 12.04 Precise

1. Imos á páxina:
https://translations.launchpad.net/ubuntu/precise/+language-packs
á dereita fixámonos en:
Latest language packs
Base pack: 2012-05-08 10:57:58 UTC
Premendo na data/hora accedemos á descarga do ficheiro .tar.gz
2. Unha vez descargado, descomprimímolo e buscamos o «noso paquete de idioma» e accedemos a el
cd /rosetta-precise/gl
3. A fin de traballar nun cartafol no que non teñamos que andar perdidos entre un feixe de ficheiros, faremos todo o traballo nesta localización desde o terminal.
4. O primeiro que imos facer é construír un ficheiro cun listado de todos os ficheiros «.po» que teñamos
find LC_MESSAGES/ -name "*.po" > lista_ficheiros_Ubuntu1204.gl.txt
5. A seguir construiremos un único ficheiro «.po»
msgcat -f lista_ficheiros_Ubuntu1204.gl.txt -u -o TM_TodoUbuntu1204.gl.po
6. E, para rematar, construímos o ficheiro «.tmx» resultante
po2tmx -l gl TM_TodoUbuntu1204.gl.po TM_TodoUbuntu1204.gl.tmx
Nota: Nestes pasos anteriores só empregamos as ferramentas «translate-toolkit» indicadas no paso anterior

Operacións complexas[edit]

Documentación de referencia:


Facer un só .tmx a partir de varios ficheiros .tmx[edit]

Para este proceso necesitamos dispor dun complemento de OmegaT chamado TMXMerger, para obtelo imos á páxina:

http://www.omegat.org/en/resources.html

Premendo na entrada TMXMerger (á dereita), lévanos á descarga dun ficheiro .zip

ou

wget http://www.omegat.org/resources/TMXMerger.zip

Unha vez descargado, descomprimímolo en ~/ (o noso «Cartafol persoal», así o recomendo, aínda que poderemos descomprimilo onde nos pete)

unzip TMXMerger.zip -d ~/

Executamos:

java -jar ~/TMXMerger/TMXMerger-1.1.jar source=gl TMXorixe1.tmx TMXorixe2.tmx [TMXorixe3.tmx]Final.tmx


Automatizar o proceso[edit]

Cando como no exemplo anterior co Ubuntu 12.04 Precise atopámonos con máis de1.600 ficheiros, temos que buscar algunha solución máis práctica. A min a mellor que se me ocorreu foi a de facer un «script» que automatice todo o proceso.

Para elo, copiade o seguinte contido nun editor de texto simple como Vi(m), Nano, Leafpad, Gedit, Kate. etc... e dádelle o nome que vos pareza mellor, e gardádeo nun cartafol, nun nivel superior a aquel no que teñades os «.po»

Dádelle permiso de execución con chmod +x nome-script

Executade o script (./nome-script), e tomadeo con paciencia.

Nota: MOI IMPORTANTE, o traballo con este paquete de Ubuntu 12.04 Precise, precisa, para el só 1GB de memoria, polo que en equipos cortiños de memoria pode levarlle moito tempo.


Código do script[edit]

#!/bin/sh

POdir=LC_MESSAGES
#POdir=PO

if [ ! -f ~/TMXMerger/TMXMerger-1.1.jar ]; then
    echo ""
    echo "AVISO:"
    echo ""
    echo "ten que obter o ficheiro TMXMerger.zip"
    echo "e descomprimilo no seu directorio persoal"
    echo ""
    echo "Pode obtelo en:"
    echo "    http://www.omegat.org/en/resources.html"
    echo ""
    exit
fi


find $POdir/ *.po  > POlist
sed -i "s+$POdir\/++" POlist
sed -i "s+.po++" POlist

[ -d TMX ] || mkdir TMX

cat POlist | while read poname

do
  po2tmx $POdir/$poname.po -l gl TMX/$poname.tmx
done

java -jar ~/TMXMerger/TMXMerger-1.1.jar source=gl TMX/*.tmx Total.tmx