Difference between revisions of "Translating gettext"
(→Pology) |
|||
Line 69: | Line 69: | ||
* [[Format handling]] |
* [[Format handling]] |
||
* [https://github.com/rory/apertium-po-l10n apertium-po-l10n] by Rory McCann, [http://www.technomancy.org/language/apertium-auto-translate-gettext/ described here] |
* [https://github.com/rory/apertium-po-l10n apertium-po-l10n] by Rory McCann, [http://www.technomancy.org/language/apertium-auto-translate-gettext/ described here] |
||
* [[Tips for translators]] |
|||
[[Category:Tools]] |
[[Category:Tools]] |
Revision as of 09:13, 30 May 2014
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.
Contents
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://anonsvn.kde.org/home/kde/trunk/l10n-support/pology
and put
export PATH=POLOGYDIR/bin:$PATH export PYTHONPATH=POLOGYDIR:$PYTHONPATH
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 "nb-nn_a", use the -M option:
$ pomtrans -s nb -t nn -p nn.:nb. -M nb-nn_a 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 nb-nn_a -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).
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...
Example
$ cat sv.po | pospell -n - -f -p apertium -- sv-da -u > da.po
Thus if you put
#!/bin/sh 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
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.)
See also
- Format handling
- apertium-po-l10n by Rory McCann, described here
- Tips for translators