Converter traducións preexistentes desde diversos formatos a .po

From Proxecto Trasno
Revision as of 18:10, 15 February 2013 by Unho (talk | contribs) (moveu "Converter de varios formatos a .po" a "Converter traducións preexistentes desde diversos formatos a .po": O título anterior provocaba equivocacións nos lectores)

Introdución

Moi a miúdo os ficheiros de tradución non están no formato PO de Gettext. Gettext é o formato de tradución máis empregado na tradución de software libre, e ese gran uso é debido á gran cantidade de ferramentas que facilitan o traballo con dito formato. Pero a maioría deses outros formatos non gozan desta vantaxe. Afortunadamente normalmente é posíbel converter ditos ficheiros ao formato PO de Gettext, pero para sacar o máximo proveito de traducións xa realizadas (tanto neses proxectos como en outros) é necesario recuperar as traducións preexistentes para empregalas como memorias de tradución que fornezan traducións xa realizadas cando se están traducindo novas cadeas e aforrarlle así traballo ao tradutor.


Conversión de codificación de caracteres

A veces é necesario converter a codificación de caracteres dun ficheiro de tradución. Empregar a codificación de caracteres UTF-8 adoita supoñer menos problemas ao converter as traducións a PO.

O primeiro paso consiste en saber cal é a codificación de caracteres que está empregando o ficheiro que se desexa converter:

$ file -bi FICHEIRO

A orde anterior indica cal é a codificación de caracteres. Para o galego adoitan ser ISO-8859-15, ISO-8859-1, ASCII ou UTF-8 (este último caso non nos preocupa). A continuación hai que converter a codificación de caracteres desde a indicada pola orde anterior á codificación de caracteres desexada, que é UTF-8:

$ iconv -f ISO-8859-15 -t UTF-8 -o FICHEIRO_UTF8 FICHEIRO

$ iconv -f ISO-8859-1 -t UTF-8 -o FICHEIRO_UTF8 FICHEIRO

$ iconv -f ASCII -t UTF-8 -o FICHEIRO_UTF8 FICHEIRO

Unha vez convertidos os ficheiros a UTF-8 xa se pode traballar sen problemas con eles.


Nota: A veces a conversión non converte ben os caracteres non ASCII, como vogais con tiles ou o ñ. Para saber se a conversión foi correcta hai que abrir o ficheiro resultante e mirar se houbo problemas na conversión (abonda con buscar as primeiras letras con tiles e ver se están ben). En caso de que non se teñan convertido correctamente estes caracteres haberá que resolver este problema, o que pode facerse abrindo o ficheiro resultante cun editor de texto e ir substituíndo os caracteres erróneos polo correspondente carácter.


Conversión de traducións preexistentes en formato CSV a PO

Para converter un ficheiro CSV con tres columnas (localización, orixinal e tradución) a formato PO abonda con executar a seguinte orde:

$ csv2po FICHEIRO.csv FICHEIRO.gl.po

En caso de que as tres columnas estean nunha orde diferente hai que indicarlle ao conversor cal é a orde das columnas:

$ csv2po --columnorder=location,target,source FICHEIRO.gl.csv FICHEIRO.gl.po


Nota: Este método serve para converter calquera folla de cálculo a PO, previa conversión da folla de cálculo a CSV o que se pode conseguir abrindo a folla de cálculo e gardándoa como CSV, por exemplo con LibreOffice Calc.


Nota: é necesario ter instalado o Translate Toolkit: $ apt-get install translate-toolkit python python-dev.


Conversión de traducións preexistentes en formato PHP a PO

Para converter dous ficheiros PHP (un do inglés e o outro coas correspondentes traducións ao galego) abonda con executar a seguinte orde:

$ php2po -t FICHEIRO.en.php FICHEIRO.gl.php FICHEIRO.gl.po

No caso de que haxa moitos ficheiros PHP para converter pode realizarse unha conversión en lote executando a seguinte orde:

$ php2po -t english/ galician/ po/

onde no directorio english estarían os ficheiros PHP do inglés, no directorio galician os do galego, e no po gardarianse os ficheiros PO resultantes da conversión.


Nota: a veces hai que realizar modificacións manuais nos ficheiros PHP debido a cambios de formato, ou por outras razóns.


Nota: os ficheiros PHP adoitan dar problemas relacionados coa codificación de caracteres. Consulta Conversión codificación de caracteres.


Nota: php2po falla se hai claves duplicadas nun ficheiro PHP, e non avisa nin da ningunha indicación de que pode estar fallando debido a isto.


Nota: para os ficheiros PHP nos cales a clave vén sendo o texto orixinal existe outro conversor diferente chamado tiki2po tamén do Translate Toolkit.


Nota: Hai varios formatos de ficheiro de tradución PHP, todos eles con extensión .php. php2po aínda non é capaz de admitir algúns destes formatos. Algúns deles engadíronse recentemente, polo cal é recomendábel empregar a última versión de Translate Toolkit.


Nota: é necesario ter instalado o Translate Toolkit: $ apt-get install translate-toolkit python python-dev.


Conversión de traducións preexistentes en formato PROPERTIES de Java a PO

Para converter dous ficheiros PROPERTIES (un do inglés e o outro coas correspondentes traducións ao galego) abonda con executar a seguinte orde:

$ prop2po --duplicates=msgctxt -t FICHEIRO.en.properties FICHEIRO.gl.properties FICHEIRO.gl.po


Nota: O conversor prop2po require que os ficheiros PROPERTIES teñan extensión .properties.


Nota: os ficheiros PROPERTIES adoitan dar problemas relacionados coa codificación de caracteres. Consulta Conversión codificación de caracteres.


Nota: é necesario ter instalado o Translate Toolkit: $ apt-get install translate-toolkit python python-dev.


Conversión de traducións preexistentes en formato INI a PO

Para converter dous ficheiros INI (un do inglés e o outro coas correspondentes traducións ao galego) abonda con executar a seguinte orde:

$ ini2po -t FICHEIRO.en.ini FICHEIRO.gl.ini FICHEIRO.gl.po


Nota: O conversor ini2po require que os ficheiros INI teñan unha sección ao comezo do ficheiro.


Nota: ini2po tamén require que os ficheiros INI teñan extensión .ini o que é algo bastante estúpido debido a que unha gran parte destes ficheiros adoitan ter outras extensións como .lng, .lang, .conf, .irl, o código do idioma ou incluso .txt e outras máis estrañas.


Nota: é necesario ter instalado o Translate Toolkit: $ apt-get install translate-toolkit python python-dev.


Conversión de traducións preexistentes en formato TS (Qt Linguist) a PO

Para converter un ficheiro TS abonda con executar a seguinte orde:

$ lconvert -i FICHEIRO.gl.ts -o FICHEIRO.gl.po


Nota: lconvert é parte do Qt's Linguist tool chain que normalmente non está instalado. O paquete a instalar varía, pero pode estar no paquete de desenvolvemento de Qt.


Conversión de traducións preexistentes en formato QM (Qt Linguist) a PO

Para converter un ficheiro QM abonda con executar a seguinte orde:

$ lconvert -i FICHEIRO.gl.qm -o FICHEIRO.gl.po --source-language en --target-language gl


Nota: lconvert é parte do Qt's Linguist tool chain que normalmente non está instalado. O paquete a instalar varía, pero pode estar no paquete de desenvolvemento de Qt.


Conversión de traducións preexistentes en formato reStructuredText a PO

A conversión de reStructuredText a PO non é automática. Para elo primeiro hai que crear o POT do inglés, e se se trata de moitos ficheiros é mellor facelo do seguinte modo.

Primeiro créase un proxecto novo:

$ sphinx-quickstart

A continuación copianse os ficheiros .rst do inglés ao proxecto, e engádense referencias a estes ficheiros no ficheiro index.rst creado por sphinx-quickstart. Consulte o titorial de Sphix se ten dúbidas.

Despois hai que executar a seguinte orde para xerar ficheiros POT para os ficheiros .rst:

$ make gettext

Unha vez obtidos os ficheiros POT créanse os correspondentes ficheiros PO para o galego, e vanse copiando manualmente un a un os textos dos ficheiros reStructuredText do galego no campo correspondente dos PO.


Nota: Sphinx normalmente non está instalado. Consulta a páxina de descarga ou instala o paquete correspondente da túa distribución.


Conversión de traducións preexistentes en formato TXT a PO

A conversión de TXT a PO non é automática. Para elo primeiro hai que crear o POT do inglés:

$ txt2po -i FICHEIRO.en.txt -P -o FICHEIRO.pot

A continuación hai que crear un ficheiro PO para o galego a partir do POT, e ir copiando manualmente un a un os textos do TXT do galego no campo correspondente do PO.


Nota: é necesario ter instalado o Translate Toolkit: $ apt-get install translate-toolkit python python-dev.


Conversión de traducións preexistentes en formato HTML a PO

A conversión de HTML a PO non é automática. Para elo primeiro hai que crear o POT do inglés:


$ html2po -i FICHEIRO.en.html -P -o FICHEIRO.pot

A continuación hai que crear un ficheiro PO para o galego a partir do POT, e ir copiando manualmente un a un os textos do HTML do galego no campo correspondente do PO.


Nota: é necesario ter instalado o Translate Toolkit: $ apt-get install translate-toolkit python python-dev.


Conversión de traducións preexistentes en formato YAML a PO

Para converter dous ficheiros YAML (un do inglés e o outro coas correspondentes traducións ao galego) abonda con executar a seguinte orde:

$ ./yaml2po -l gl -t FICHEIRO.en.yml FICHEIRO.gl.yml FICHEIRO.gl.po


Nota: yaml2po pode obterse no seguinte repositorio.


Nota: Lembre darlle permisos de execución a yaml2po, por exemplo executando chmod +x yaml2po.


Conversión de traducións preexistentes en formatos estraños

A conversión desde outros formatos estraños normalmente implica a conversión a un formato semellante para o cal si exista un conversor, normalmente INI ou PROPERTIES debido á súa simplicidade. A conversión pode facerse mediante scripts creados ad hoc ou manualmente, dependendo da extensión do ficheiro, da heteroxeneidade do ficheiro orixinal ou do número de cambios requiridos. Entre estes formatos atópanse ficheiros XML, ficheiros de código fonte en JavaScript ou Python ou os ficheiros NSH e NLF do instalador NSIS.

Ademais este tipo de ficheiros adoita requirir unha conversión da codificación de caracteres e a substitución de caracteres, por exemplo \r\n por \n.


Conversión de traducións preexistentes en formato PO con particularidades

Hai algúns desenvolvedores que non empregan Gettext como deberían. Estes casos son moi pouco frecuentes. Entre estes atópanse os que no texto orixinal non empregan o inglés senón outro idioma como o castelán ou o francés, ou aqueles que no msgid inclúen un identificador único que debería estar no msgctxt, ou ficheiros PO con caracteres estraños.

Para obter un ficheiro PO con textos en inglés no msgid e a tradución ao galego no msgstr a partir de ficheiros PO nos cales non hai textos en inglés no msgid pode empregarse o script create_po_from_two_non_english_source_files que se pode obter no seguinte repositorio.

Ese mesmo script serve para o caso de que de os ficheiros PO teñan un identificador no msgid en vez no msgctxt.

Nos PO con caracteres estraños abonda con abrir o ficheiro cun editor de texto e realizar as substitucións pertinentes.