PO4A(1p)

NAAM
po4a - in één bewerking PO-bestanden en vertaalde documenten bijwerken

OVERZICHT
po4a [opties] configuratie_bestand

BESCHRIJVING
po4a (PO for anything - Po voor alles) vergemakkelijkt het onderhoud van de vertaling van documentatie met het klassieke gettext-gereedschap. Het belangrijkste kenmerk van po4a is, dat het de vertaling van inhoud loskoppelt van de structuur van het document. Raadpleeg pagina po4a(7) voor een welwillende introductie in dit project.

Upon execution, po4a parses all documentation files specified in its configuration file. It updates the PO files (containing the translation) to reflect any change to the documentation, and produce a translated documentation by injecting the content's translation (found in the PO files) into the structure of the original master document.

At first, the PO files only contain the strings to translate from the original documentation. This file format allows the translators to manually provide a translation for each paragraph extracted by po4a. If the documentation is modified after translation, po4a marks the corresponding translations as "fuzzy" in the PO file to request a manual review by the translators. The translators can also provide so-called "addendum", that are extra content stating for example who did the translation and how to report bugs.

 master documents ---+---->-------->---------+
  (doc authoring)    |                       |
                     V   (po4a executions)   >-----+--> translated
                     |                       |     |     documents
 existing PO files -->--> updated PO files >-+     |
      ^                            |               |
      |                            V               |
      +----------<---------<-------+               ^
       (manual translation process)                |
                                                   |
 addendum -->--------------------------------------+

The workflow of po4a is asynchronous, as suited to open-source projects. The documentation writers author the master documents at their own pace. The translators review and update the translations in the PO files. The maintainers rerun po4a on need, to reflect any change to the original documentation to the PO files, and to produce updated documentation translations, by injecting the latest translation into the latest document structure.

By default, a given translated document is produced when at least 80% of its content is translated. The untranslated text is kept in the original language. The produced documentation thus mixes languages if the translation is not complete. You can change the 80% threshold with the --keep option described below. Note however that discarding translations as soon as they are not 100% may be discouraging for the translators whose work will almost never be shown to the users, while showing "translations" that are too incomplete may be troubling for the end users.

Storing the translated documentation files in the version control system is probably a bad idea, since they are automatically generated. The precious files are the PO files, that contain the hard work of your fellow translators. Also, some people find it easier to interact with the translators through an online platform such as weblate, but this is naturally fully optional.

  Quick start tutorial
Let's assume you maintain a program named foo which has a man page man/foo.1 written in English (the bridge language in most open-source projects, but po4a can be used from or to any language). Some times ago, someone provided a German translation named man/foo.de.1 and disappeared. This is a problem because you just got a bug report saying that your documentation contains a gravely misleading information that must be fixed in all languages, but you don't speak German so you can only modify the original, not the translation. Now, another contributor wants to contribute a translation to Japanese, a language that you don't master either.

It is time to convert your documentation to po4a to solve your documentation maintenance nightmares. You want to update the doc when needed, you want to ease the work of your fellow translators, and you want to ensure that your users never see any outdated and thus misleading documentation.

The conversion includes two steps: setup the po4a infrastructure, and convert the previous German translation to salvage the previous work. This latter part is done using po4a-gettextize, as follows. As detailed in the documentation of po4a-gettextize(1), this process rarely fully automatic, but once it's done, the de.po file containing the German translation can be integrated in your po4a workflow.

  po4a-gettextize --format man --master foo.1 --localized foo.de.1 --po de.po

Let's now configure po4a. With the appropriate file layout, your configuration file could be as simple as this:

 [po_directory] man/po4a/

 [type: man] man/foo.1 $lang:man/translated/foo.$lang.1

It specifies that all PO files (containing the work of the translators) are the man/po4a/ directory, and that you have only one master file, man/foo.1. If you had several master files, you would have several lines similar to the second one. Each such line also specify where to write the corresponding translation files. Here, the German translation of man/foo.1 is in man/translated/foo.de.1.

The last thing we need to complete the configuration of po4a is a POT file containing the template material that should be used to start a new translation. Simply create an empty file with the .pot extension in the specified po_directory (e.g. man/po4a/foo.pot), and po4a will fill it with the expected content.

Here is a recap of the files in this setup:

  ├── man/
  │   ├── foo.1        <- The original man page, in English.
  │   ├── po4a/
  │   │   ├── de.po    <- The German PO translation, from gettextization.
  │   │   └── foo.pot  <- The POT template of future translations (empty at first)
  │   └── translated/  <- Directory where the translations will be created
  └── po4a.cfg         <- The configuration file.

Once setup, executing po4a will parse your documentation, update the POT template file, use it to update the PO translation files, and use them to update the documentation translation files. All in one command:

        po4a --verbose po4a.cfg

This it. po4a is now fully configured. Once you've fixed your error in man/foo.1, the offending paragraph in the German translation will be replaced by the fixed text in English. Mixing languages is not optimal, but it's the only way to remove errors in translations that you don't even understand, and ensure that the content presented to the users is never misleading. Updating the German translation is also much easier in the corresponding PO file, so the language mix-up may not last long. Finally, when the Japanese translator gives you a jp.po translated file, just drop it in man/po4a/po/. A translated page will appear as man/translated/foo.jp.1 (provided that enough content is translated) when you run po4a again.

OPTIES

-k, --keep
    Minimale drempelwaarde, uitgedrukt in vertaald percentage, om het resulterende bestand te behouden (d.w.z. neer te schrijven) (standaard: 80). D.w.z. dat bestanden standaard minstens 80% vertaald moeten zijn om naar schijf geschreven te worden.

-h, --help
    Een korte hulptekst tonen.

-M, --master-charset
    Tekenset van de bestanden met de te vertalen documenten. Merk op dat alle hoofddocumenten dezelfde tekenset moeten gebruiken.

-L, --localized-charset
    Tekenset van de bestanden met de gelokaliseerde documenten. Merk op dat voor alle vertaalde documenten dezelfde tekenset gebruikt zal worden.

-A, --addendum-charset
    Tekenset van de addenda. Merk op dat alle addenda dezelfde tekenset moeten hebben.

-V, --version
    De versie van het script tonen en afsluiten.

-v, --verbose
    De breedsprakigheid van het programma verhogen.

-q, --quiet
    De breedsprakigheid van het programma verminderen.

-d, --debug
    Enige foutopsporingsinformatie weergeven.

-o, --option
    Extra optie(s) om door te geven aan de indelingsplug-in. Raadpleeg de documentatie bij elke plug-in voor meer informatie over de geldige opties en hun betekenis. U zou bijvoorbeeld '-o tablecells' kunnen doorgeven aan de ontleder voor AsciiDoc, terwijl de ontleder voor tekst '-o tabs=split' zou accepteren.

-f, --force
    Steeds de POT- en PO-bestanden genereren, zelfs indien po4a dit niet nodig acht.

    Het standaardgedrag (indien --force niet opgegeven werd) is als volgt:

        Indien het POT-bestand reeds bestaat, wordt het opnieuw gegenereerd indien een hoofddocument of het configuratiebestand recenter is (tenzij --no-update opgegeven werd). Het POT-bestand wordt ook in een tijdelijk document weggeschreven en po4a gaat na of de wijzigingen echt nodig zijn.

        Ook wordt een vertaling enkel opnieuw gegenereerd indien zijn hoofddocument, het PO-bestand, één van zijn addenda of het configuratiebestand recenter is. Om te vermijden dat geprobeerd wordt vertalingen opnieuw te genereren die niet slagen in de drempelwaardetest (zie --keep), kan een bestand met de extensie .po4a-stamp gecreëerd worden (zie --stamp).

    Als in een hoofddocument externe bestanden geïntegreerd worden, moet u de vlag --force gebruiken, omdat geen rekening gehouden wordt met de wijzigingsdatum van deze ingesloten bestanden.

    De PO-bestanden worden steeds opnieuw gegenereerd op basis van het POT-bestand met msgmerge -U.

--stamp
    Geeft aan dat po4a een stempelbestand moet genereren indien er geen vertaling gegenereerd wordt omdat deze de drempelwaarde niet bereikt. Dit stempelbestand wordt vernoemd naar het verwachte vertaalde document met de extensie .po4a-stamp.

    Opmerking: Dit activeert enkel het creëren van de .po4a-stamp-bestanden. Als deze bestaan, worden de stempelbestanden steeds gebruikt, en zij worden verwijderd met --rm-translations of wanneer het bestand uiteindelijk vertaald is.

--no-translations
    De vertaalde documenten niet genereren, enkel de POT- en PO-bestanden bijwerken.

--no-update
    De POT- en PO-bestanden niet wijzigen, enkel de vertaling mag bijgewerkt worden.

--keep-translations
    Behoudt de bestaande vertaalbestanden, zelfs indien de vertaling niet beantwoordt aan de drempelwaarde die door --keep gespecificeerd wordt. Met deze optie worden geen nieuwe vertaalbestanden met weinig inhoud gecreëerd, maar bestaande vertalingen die verkommeren door wijzigingen aan de hoofdbestanden, blijven bewaard.

    WAARSCHUWING: Met deze vlag wordt het gedrag van po4a op een eerder drastische wijze veranderd: uw vertaalde bestanden zullen helemaal niet bijgewerkt worden totdat de vertaling verbetert. Gebruik deze vlag enkel indien u verkiest om een verouderde vertaalde documentatie te verspreiden boven een accurate onvertaalde documentatie.

--rm-translations
    De vertaalde bestanden verwijderen (impliceert --no-translations).

--no-backups
    Deze vlag heeft sinds versie 0.41 geen effect meer, en ze kan uit latere releases verwijderd worden.

--rm-backups
    Deze vlag heeft sinds versie 0.41 geen effect meer, en ze kan uit latere releases verwijderd worden.

--translate-only vertaald-bestand
    Enkel het gespecificeerde bestand vertalen. Dit kan nuttig zijn om de verwerking te versnellen als een configuratiebestand veel bestanden bevat. Merk op dat met deze optie PO- en POT-bestanden niet bijgewerkt worden. Deze optie kan meerdere keren gebruikt worden.

--variable var=waarde
    Een variabele definiëren welke in het configuratiebestand van po4a vervangen zal worden. Overal waar $(var) voorkomt, zal deze vervangen worden door waarde. Deze optie kan meerdere malen gebruikt worden.

--srcdir BRONMAP
    De basismap instellen van alle invoerdocumenten welke in het configuratiebestand van po4a gespecificeerd worden.

    Indien zowel destdir als srcdir vermeld zijn, worden invoerbestanden in de volgende mappen gezocht in deze volgorde: destdir, de huidige map en srcdir. Uitvoerbestanden worden weggeschreven in destdir als deze gespecificeerd is, of in de huidige map.

--destdir DOELMAP
    De basismap instellen voor al de uitvoerdocumenten, welke in het configuratiebestand van po4a gespecificeerd zijn (zie --srcdir hierboven).

  Opties die de POT-header wijzigen

--porefs type
    Het referentieformaat specificeren. Het argument type kan één van de volgende zijn: never om geen enkele referentie te produceren, file om enkel het bestand zonder het lijnnummer te specificeren, counter om het regelnummer te vervangen door een oplopende teller, en full om volledige referenties op te nemen (standaard: full).

--wrap-po no|newlines|getal (standaard: 76)
    Specificeren hoe de regelafbreking voor po-bestanden er moet uitzien. Dit geeft de keuze tussen bestanden met een mooie regelafbreking, die echter kunnen leiden tot git-conflicten en bestanden die makkelijker automatisch te behandelen zijn, maar voor mensen moeilijker leesbaar.

    Vanouds brak de gettext-suite uit cosmetische overwegingen de regels van po-bestanden af bij de 77e kolom. Deze optie specificeert het gedrag van po4a. Indien dit ingesteld wordt op een numerieke waarde, zal po4a de regels van het po-bestand afbreken na deze kolom en na regeleinden die in de inhoud voorkomen. Indien dit ingesteld wordt op newlines, zal po4a de msgid en msgstr enkel afbreken na regeleinden die in de inhoud voorkomen. Indien dit ingesteld wordt op no, zal po4a helemaal geen regelafbreking toepassen in het po-bestand. De regelafbreking in het referentiecommentaar gebeurt steeds door het gettext-gereedschap dat we intern gebruiken.

    Merk op dat deze optie geen impact heeft op de wijze waarop regelafbreking in msgid en msgstr gebeurt, d.w.z. op hoe einderegels toegevoegd worden aan de inhoud van deze tekstfragmenten.

--master-language
    Taal van de bronbestanden die de te vertalen documenten bevatten. Merk op dat alle hoofddocumenten dezelfde taal moeten gebruiken.

--msgid-bugs-address email@adres
    Het adres instellen voor het rapporteren van msgid-bugs. Standaard bevatten de gecreëerde POT-bestanden niet het veld Report-Msgid-Bugs-To.

--copyright-holder tekenreeks
    Instellen van de copyrighthouder in de POT-header. De standaardwaarde is "Free Software Foundation, Inc."

--package-name tekenreeks
    Instellen van de pakketnaam voor de POT-header. Standaard is dat "PACKAGE".

--package-version tekenreeks
    Instellen van de pakketversie voor de POT-header. Standaard is dat "VERSION".

  Opties om de PO-bestanden te wijzigen

--msgmerge-opt opties
    Extra opties voor msgmerge(1).

    Opmerking: $lang zal vervangen worden door de huidige taal.

--no-previous
    Deze optie verwijdert --previous uit de opties die doorgegeven worden aan msgmerge. Dit is nodig om versies van gettext te ondersteunen, eerder dan 0.16.

--previous
    Met deze optie voegt men --previous toe aan de opties die aan msgmerge doorgegeven worden. De optie heeft versie 0.16 of recenter van gettext nodig en is standaard geactiveerd.

CONFIGURATIEBESTAND
po4a verwacht een configuratiebestand als argument. Dit bestand moet de volgende elementen bevatten:

•   Het pad naar de PO-bestanden en de lijst van talen die in het project bestaan;

•   Facultatief, een aantal globale opties en zogenaamde configuratiealiassen welke als sjablonen gebruikt worden om individuele hoofdbestanden te configureren;

•   De lijst van elk masterbestand dat moet worden vertaald, samen met specifieke parameters.

Alle regels bevatten een commando tussen rechte haakjes, gevolgd door zijn parameters. Commentaar begint met het teken '#' en loopt verder tot het einde van de regel. U kunt met een escapeteken aan het einde van de regel het commando spreiden over verschillende regels.

Op deze pagina worden enkele volledig uitgewerkte voorbeelden gegeven, terwijl andere voorbeelden te vinden zijn in de map "t/cfg" van de brondistributie.

  De PO- en POT-bestanden vinden
De eenvoudigste manier is om als volgt expliciet het pad op te geven naar het POT-bestand en de PO-bestanden:

 [po4a_paths] man/po/project.pot nl:man/po/nl.po fr:man/po/fr.po

Dit specificeert eerst het pad naar het POT-bestand, en daarna de paden naar de Nederlandse en Franse PO-bestanden.

Dezelfde informatie kan als volgt geschreven worden om het risico op kopiëren/plakken-fouten te verkleinen:

 [po4a_langs] fr nl
 [po4a_paths] man/po/project.pot $lang:man/po/$lang.po

De component $lang wordt automatisch vervangen door gebruik te maken van de opgegeven taallijst. Dit beperkt het risico op een fout van het type kopiëren/plakken wanneer een nieuwe taal toegevoegd wordt.

U kunt dezelfde informatie nog compacter maken door als volgt enkel het pad op te geven naar de map die uw vertaalproject bevat.

 [po_directory] man/po/

De opgegeven map moet een aantal PO-bestanden bevatten, elk met een naam XX.po, waarbij "XX" de ISO 639-1-code is van de taal die in dit bestand wordt gebruikt. De map moet ook één enkel POT-bestand bevatten, met als bestandsextensie ".pot". Voor de eerste doorloop mag dit bestand leeg zijn, maar het moet wel bestaan (po4a kan de naam die voor de extensie moet worden gebruikt, niet raden).

Merk op dat u enkel een van beide moet kiezen: "po_directory" of "po4a_paths". Het eerste ("po_directory") is compacter en vermindert nog meer het risico op kopiëren/plakken-fouten, maar dwingt u de verwachte projectstructuur en bestandsnamen te gebruiken. Het tweede ("po4a_paths") is explicieter en wellicht makkelijker leesbaar en wordt aanbevolen als u uw eerste project opzet met po4a.

Centrale of gesplitste PO-bestanden?

Standaard produceert po4a één enkel PO-bestand per doeltaal. Dit bevat de volledige inhoud van uw vertaalproject. Als uw project uitgebreider wordt, kan de omvang van deze bestanden problematisch worden. Indien weblate gebruikt wordt , is het mogelijk specifieke prioriteiten op te geven voor elk vertalingssegment (d.w.z. msgid), zodat de belangrijkste eerst vertaald worden. Nochtans geven sommige vertaalteams er de voorkeur aan de inhoud op te splitsen in verschillende bestanden.

Om één PO-bestand per hoofdbestand te hebben, moet u gewoon op de volgende manier de tekenreeks $master gebruiken in de naam van uw PO-bestanden op de regel "[po4a_paths]".

 [po4a_paths] doc/$master/$master.pot $lang:doc/$master/$lang.po

With this line, po4a will produce separate POT and PO files for each document to translate. For example, if you have 3 documents and 5 languages, this will result in 3 POT files and 15 PO files. These files are named as specified on the "po4a_paths" template, with $master substituted to the basename of each document to translate. In case of name conflict, you can specify the POT file to use as follows, with the "pot=" parameter.

This feature can also be used to group several translated files into the same POT file. The following example only produces 2 POT files: l10n/po/foo.pot (containing the material from foo/gui.xml) and l10n/po/bar.pot (containing the material from both bar/gui.xml and bar/cli.xml).

 [po4a_langs] de fr ja
 [po4a_paths] l10n/po/$master.pot $lang:l10n/po/$master.$lang.po
 [type: xml] foo/gui.xml $lang:foo/gui.$lang.xml pot=foo
 [type: xml] bar/gui.xml $lang:bar/gui.$lang.xml pot=bar
 [type: xml] bar/cli.xml $lang:bar/cli.$lang.xml pot=bar

In gesplitste modus bouwt po4a een tijdelijk compendium op tijdens het bijwerken van de PO-bestanden, om de vertaling met alle PO-bestanden te delen. Indien twee PO-bestanden voor hetzelfde tekstfragment verschillende vertalingen bevatten, zal po4a dit tekstfragment als onnauwkeurig (fuzzy) markeren en beide vertalingen invoegen in alle PO-bestanden die dat tekstfragment bevatten. Wanneer de vertaler de vertaling ontwart, zal deze vertaling automatisch is elk PO-bestand gebruikt worden.

  De te vertalen documenten specificeren
U moet ook de documenten die vertaald moeten worden, vermelden. Voor elk hoofdbestand moet u de te gebruiken indelingsontleder opgeven, de locatie van het te produceren vertaalde bestand en facultatief enige configuratie. Hier volgt een voorbeeld:

 [type: sgml] doc/my_stuff.sgml fr:doc/fr/mon_truc.sgml \
              nl:doc/nl/mijn_spullen.sgml
 [type: man] script fr:doc/fr/script.1 nl:doc/nl/script.1
 [type: docbook] doc/script.xml fr:doc/fr/script.xml \
             nl:doc/nl/script.xml

Maar ook hier zijn deze complexe regels moeilijk te lezen en aan te passen, bijvoorbeeld bij het toevoegen van een nieuwe taal. Het is veel eenvoudiger om deze zaken als volgt te herorganiseren met behulp van het $lang-sjabloon:

 [type: sgml]    doc/my_stuff.sgml $lang:doc/$lang/my_stuff.sgml
 [type: man]     script.1          $lang:po/$lang/script.1
 [type: docbook] doc/script.xml    $lang:doc/$lang/script.xml

  Opties specificeren
Er bestaan twee types opties: po4a-opties zijn standaardwaarden voor de po4a commandoregelopties, terwijl opmaakopties gebruikt worden om het gedrag van de opmaakontleders te beïnvloeden. U zou bijvoorbeeld in uw configuratiebestand kunnen specificeren dat de standaardwaarde voor de commandoregelparameter --keep 50% is in plaats van 80%. Opmaakopties worden gedocumenteerd op de specifieke pagina van iedere ontleedmodule, bijv. Locale::Po4a::Xml(3pm). U zou bijvoorbeeld nostrip kunnen meegeven aan de XML-ontleder om de spaties rond de geëxtraheerde tekstfragmenten niet te laten weghalen.

U kunt deze opties meegeven voor een specifiek hoofdbestand, of zelfs voor een specifieke vertaling van dat bestand met "opt:" of met "opt_XX:" voor de taal "XX". In het volgende voorbeeld wordt de optie nostrip meegegeven aan de XML-ontleder (voor alle talen), terwijl de drempelwaarde tot 0% teruggebracht wordt voor de Franse vertaling (welke dus steeds behouden blijft).

 [type:xml] toto.xml $lang:toto.$lang.xml opt:"-o nostrip" opt_fr:"--keep 0"

Deze configuratieonderdelen moeten in ieder geval aan het einde van de regel staan. Eerst moet de declaratie van bestanden komen, dan het eventuele addendum (zie hierna) en dan pas de opties. Het groeperen van configuratieonderdelen is niet erg belangrijk, omdat elementen intern samengevoegd worden tot tekenreeksen. De volgende voorbeelden zijn allemaal gelijkwaardig:

  [type:xml] toto.xml $lang:toto.$lang.xml opt:"--keep 20" opt:"-o nostrip" opt_fr:"--keep 0"
  [type:xml] toto.xml $lang:toto.$lang.xml opt:"--keep 20 -o nostrip" opt_fr:"--keep 0"
  [type:xml] toto.xml $lang:toto.$lang.xml opt:--keep opt:20 opt:-o opt:nostrip opt_fr:--keep opt_fr:0

Merk op dat taalspecifieke opties niet gebruikt worden bij het bouwen van het POT-bestand. Het is bijvoorbeeld niet mogelijk om de optie nostrip mee te geven aan de ontleder wanneer enkel de Franse vertaling wordt gebouwd, omdat het POT-bestand gebruikt wordt om elke taal te updaten. Dus zijn de enige opties die taalspecifiek kunnen zijn, die opties welke gebruikt worden bij het produceren van de vertaling, zoals de optie "--keep".

Configuratiealiassen

De beste manier om dezelfde optie mee te geven aan verschillende bestanden is als volgt een alias voor een type te definiëren. In het volgende voorbeeld wordt de optie "--keep 0" aan iedere Italiaanse vertaling meegegeven met dit "test"-type, welke een uitbreiding is van het "man"-type.

  [po4a_alias:test] man opt_it:"--keep 0"
  [type: test] man/page.1 $lang:man/$lang/page.1

U kunt een bestaand type ook uitbreiden door als volgt dezelfde naam te gebruiken voor de alias. Dit wordt niet geïnterpreteerd als een foutieve recursieve definitie.

  [po4a_alias:man] man opt_it:"--keep 0"
  [type: man] man/page.1 $lang:man/$lang/page.1

Globale standaardopties

U kunt ook "[options]"-regels gebruiken om opties te definiëren welke voor alle bestanden gebruikt moeten worden, ongeacht hun type.

  [options] --keep 20 --option nostrip

Zoals het geval is voor de commandoregelopties, kunt u de parameters die in het configuratiebestand meegegeven worden, afkorten:

  [options] -k 20 -o nostrip

Optieprioriteiten

De opties voor alle bronnen worden samengevoegd, zodat de standaardwaarden gemakkelijk kunnen worden overschreven door meer specifieke opties. De volgorde is de volgende:

•   "[options]"-regels bieden standaardwaarden die door elke andere bron overschreven kunnen worden.

•   Daarna worden aliassen voor types gebruikt. Taalspecifieke instellingen overschrijven die welke van toepassing zijn op alle talen.

•   Instellingen welke specifiek zijn voor een bepaald hoofdbestand overschrijven zowel de standaardinstellingen als die welke afkomstig zijn van de type-alias. Ook in dit geval overschrijven taalspecifieke instellingen de globale instellingen.

•   Tenslotte overschrijven parameters welke opgegeven worden aan de po4a-commandoregel, eventuele instellingen uit het configuratiebestand.

Voorbeeld

Hier volgt een voorbeeld dat laat zien hoe u de spaties en aanhalingstekens moet citeren:

 [po_directory] man/po/

 [options] --master-charset UTF-8

 [po4a_alias:man] man opt:"-o \"mdoc=NAME,SEE ALSO\""
 [type:man] t-05-config/test02_man.1 $lang:tmp/test02_man.$lang.1 \
            opt:"-k 75" opt_it:"-L UTF-8" opt_fr:--verbose

  Addendum: extra inhoud toevoegen aan de vertaling
Indien u aan de vertaling een extra sectie wilt toevoegen, bijvoorbeeld om erkenning te geven aan de vertaler, moet u een addendum definiëren bij de regel welke uw hoofdbestand definieert, Raadpleeg pagina po4a(7) voor meer informatie over de syntaxis van addendumbestanden.

 [type: pod] script fr:doc/fr/script.1 \
             add_fr:doc/l10n/script.fr.add

U kunt ook als volgt gebruik maken van taalsjablonen:

 [type: pod] script $lang:doc/$lang/script.1 \
             add_$lang:doc/l10n/script.$lang.add

Indien het toepassen van een addendum mislukt, wordt de vertaling verwijderd.

Wijzigingselementen voor de addendumdeclaratie

Met addendumwijzigingselementen kan het configuratiebestand vereenvoudigd worden in het geval er niet voor elke taal een addendum is, of wanneer de lijst met addenda verschilt naargelang de taal. Het wijzigingselement is één enkele letter die voor de bestandsnaam staat.

?   pad_naar_addendum toevoegen indien dit bestand bestaat; in het ander geval niets doen.

@   pad_naar_addendum is geen gewoon addendum, maar een bestand dat een lijst met addenda bevat, één per regel. Elk addendum kan voorafgegaan worden door wijzigingselementen.

!   pad_naar_addendum wordt weggelaten; het wordt niet geladen en zal niet geladen worden bij eventuele verdere addendumspecificaties.

Met het volgende wordt voor elke taal een addendum toegevoegd, maar enkel indien het bestaat. Er wordt geen fout gerapporteerd indien het addendum niet bestaat.

 [type: pod] script $lang:doc/$lang/script.1  add_$lang:?doc/l10n/script.$lang.add

Met het volgende wordt een lijst met addenda toegevoegd voor elke taal:

 [type: pod] script $lang:doc/$lang/script.1  add_$lang:@doc/l10n/script.$lang.add

  De vertaalde tekstfragmenten filteren
Soms wilt u bepaalde tekstfragmenten voor het vertaalproces verborgen houden. Met dit doel kunt u een "pot_in"-parameter opgeven aan uw hoofdbestand om de naam op te geven van het bij het bouwen van het POT-bestand te gebruiken bestand in plaats van het echte hoofdbestand. Hier volgt een voorbeeld:

  [type:docbook] boek.xml          \
          pot_in:boek-gefilterd.xml \
          $lang:boek.$lang.xml

Met deze instelling zullen de te vertalen tekstfragmenten geëxtraheerd worden uit het bestand boek-gefilterd.xml (dat aangemaakt moet worden vooraleer po4a aangeroepen wordt), terwijl de vertaalde bestanden gebouwd worden vanuit boek.xml. Als gevolg daarvan zullen alle tekstfragmenten welke in boek.xml voorkomen maar niet in boek-gefilterd.xml, niet opgenomen worden in de PO-bestanden, waardoor voorkomen wordt dat vertalers er een vertaling voor geven. Deze tekstfragmenten zullen dus ongewijzigd blijven bij het aanmaken van de vertaalde documenten. Dit verlaagt natuurlijk de graad van vertaling, waardoor u mogelijk de optie "--keep" zult moeten aanpassen om ervoor te zorgen dat het document desondanks aangemaakt wordt.

ZIE OOK
po4a-gettextize(1), po4a(7).

AUTEURS
 Denis Barbier <barbier@linuxfr.org>
 Nicolas François <nicolas.francois@centraliens.net>
 Martin Quinson (mquinson#debian.org)

COPYRIGHT EN LICENTIE
Copyright 2002-2022 by SPI, inc.

Dit programma is vrije software; u kunt het verder verspreiden en/of aanpassen onder de bepalingen van de GPL (zie het bestand COPYING).