Next: , Previous: Compendium, Up: Compendium


8.4.1 Creating Compendia

Basically every PO file consisting of translated entries only can be declared as a valid compendium. Often the translator wants to have special compendia; let's consider two cases: concatenating PO files and extracting a message subset from a PO file.

8.4.1.1 Concatenate PO Files

To concatenate several valid PO files into one compendium file you can use ‘msgcomm’ or ‘msgcat’ (the latter preferred):

     msgcat -o compendium.po file1.po file2.po

By default, msgcat will accumulate divergent translations for the same string. Those occurrences will be marked as fuzzy and highly visible decorated; calling msgcat on file1.po:

     #: src/hello.c:200
     #, c-format
     msgid "Report bugs to <%s>.\n"
     msgstr "Comunicar `bugs' a <%s>.\n"

and file2.po:

     #: src/bye.c:100
     #, c-format
     msgid "Report bugs to <%s>.\n"
     msgstr "Comunicar \"bugs\" a <%s>.\n"

will result in:

     #: src/hello.c:200 src/bye.c:100
     #, fuzzy, c-format
     msgid "Report bugs to <%s>.\n"
     msgstr ""
     "#-#-#-#-#  file1.po  #-#-#-#-#\n"
     "Comunicar `bugs' a <%s>.\n"
     "#-#-#-#-#  file2.po  #-#-#-#-#\n"
     "Comunicar \"bugs\" a <%s>.\n"

The translator will have to resolve this “conflict” manually; she has to decide whether the first or the second version is appropriate (or provide a new translation), to delete the “marker lines”, and finally to remove the fuzzy mark.

If the translator knows in advance the first found translation of a message is always the best translation she can make use to the ‘--use-first’ switch:

     msgcat --use-first -o compendium.po file1.po file2.po

A good compendium file must not contain fuzzy or untranslated entries. If input files are “dirty” you must preprocess the input files or postprocess the result using ‘msgattrib --translated --no-fuzzy’.

8.4.1.2 Extract a Message Subset from a PO File

Nobody wants to translate the same messages again and again; thus you may wish to have a compendium file containing getopt.c messages.

To extract a message subset (e.g., all getopt.c messages) from an existing PO file into one compendium file you can use ‘msggrep’:

     msggrep --location src/getopt.c -o compendium.po file.po