Translating gettext

From Apertium
Jump to: navigation, search

En français

Apertium does not have a built-in format handler for gettext / .po-files; however, there are excellent tools available which can use Apertium to translate these files. For command-line and batch usage, Pology is recommended; if you want Apertium to give suggestions in a po-editor, try Virtaal.


[edit] Pology

The simplest and best command-line method of translating gettext po-files with Apertium is by using the Python package Pology.

Follow the instructions on the link to set it up, it should be something like:

svn checkout svn://
and put

in your ~/.bashrc (exchanging POLOGYDIR for the directory you checked it out to).

Then, in a new terminal, you can do:

 $ pomtrans -s en -t es apertium es.po 

This assumes the source language of es.po is "en". However, you might want to translate from Swedish to Danish using the files sv.po and da.po. In that case, you need to supply the "-p" argument:

 $ pomtrans -s sv -t da -p sv.:da. apertium da.po

In case you want to use a mode that's not named like "sl-tl", like "nob-nno", use the -M option:

 $ pomtrans -s nb -t nn -p nn.:nb. -M nob-nno apertium nn.po

(this again assumes that there's an nb.po file in the same directory)

You might also want to specify the path to apertium (eg. if you installed apertium in /usr/local, not /usr), and the accelerator Key; the full command then becomes:

 $ pomtrans -s nb -t nn -p nn.:nb. -M nob-nno -T /usr/local/bin/apertium -a "&" apertium nn.po

pomtrans can also work recursively on directories, and will mark any MT output as fuzzy, while skipping already-translated text. See the docs/user/lingo.docbook for some excellent documentation.

Note: all these pomtrans-examples assume that both the source and language files exist. So in the above examples, da.po and nn.po would have to exist even though it makes most sense to run MT when all msgstr's are empty. If you only have e.g. sv.po and need an empty da.po for pomtrans to fill with machine translations, you can first run

msgfilter --keep-header  -i sv.po -o da.po awk -e '{}'

(just remember to edit the header afterwards so it has the right language code). The program msgfilter is part of the gettext package (easily installable in all major package managers).

[edit] pospell

A combination of pospell and Apertium can also be used to translate gettext .po files.

I had some trouble with this when I tried, pology worked perfectly however. --unhammer 08:44, 15 September 2010 (UTC)

pospell is part of the spellutils package, available through apt-get, macports, emerge, urpmi...

[edit] Example

$ cat sv.po | pospell -n - -f -p apertium -- sv-da -u > da.po

Thus if you put

pospell -n - -f -p apertium -- -u "$@"

into a file called eg. "apertium-po", and chmod +x apertium-po, you can do

$ cat sv.po | apertium-po sv-da > da.po

[edit] Virtaal

Or you could just use the .po file editor Virtaal, which has an Apertium plugin. (So far this only works with the web service, but later version might be able to use local installations.)

[edit] See also

Personal tools