Migrating an existing translation to a PO file format is basically editing the header as described in the previous section, and populating each of the messages by copying the already translated text and/or markup from the existing translation in HTML format in the relevant message.
Typically, you will visit po/foo.lang.po (in PO mode) and
foo.lang.html (in HTML mode) in another buffer. Then you
can copy a paragraph or an element from the latter and yank it in the
relevant message in the former. Be extra careful, since this is the
time to check precisely that the translation corresponds to the
original. Further changes will be reflected, but if your “initial”
PO file is not a 100% match, that would not necessarily mean that it
is an improvement. Since it is very easy to do this kind of check,
because the relevant
msgstr appear one above
the other in the same buffer (or the similar concept in other PO
editors), please do perform this initial sanity check even if
you are confident that the translation you have been yanking strings
from is a completely up-to-date translation.
There is also a semi-automatic way to produce an initial PO file. You
checkout the revision of the English page, foo.html, that
corresponds to the latest revision of the translation,
foo.lang.html. Then you run
po4a-gettextize (See gnun-preconvert.):
gnun-preconvert foo.lang.html foo.html
If some passages in foo.lang.html don’t match the structure
of foo.html, error messages will be displayed. Check them,
adjust the files and try again. When you succeed, the result will be
written to foo.lang.po. After that, run
gnun-merge-preconverted (See gnun-merge-preconverted.):
gnun-merge-preconverted -C compendium.lang.po foo.lang.po foo.pot
If you have no compendium, just omit the “
You get foo.lang.po where all messages are marked as
“fuzzy” (unless you use a compendium); you still should make sure that
the translations correspond to the original and remove those “fuzzy”
marks. The script adds differences against “previous”
There is no need to delete the existing HTML translation, GNUN will automatically overwrite it. The only thing a translator should do is to commit the PO file in the repository.
When an essay has been translated by several people through the years, it is important that this information is recorded and reflected in the PO file. In the future, special targets may be added to enable the FSF to check who translated a particular article, and when.
A recommended way to do this is as follows:
# French translation of http://www.gnu.org/philosophy/bsd.html # Copyright (C) 2006, 2007, 2008 Free Software Foundation, Inc. # This file is distributed under the same license as the gnu.org article. # Cédric Corazza <email@example.com>, 2006, 2008. # Jerôme Dominguez <firstname.lastname@example.org>, 2007.
In this example, it is clear that Cédric made the initial translation, Jerôme made some changes in 2007, and the original translator returned in 2008 and continued maintaining it.