Scroll to navigation

LOCALE::PO4A::PO.3PM(1) User Contributed Perl Documentation LOCALE::PO4A::PO.3PM(1)

NAAM

Locale::Po4a::Po - Module voor het manipuleren van PO-bestanden

OVERZICHT

    use Locale::Po4a::Po;
    my $pofile=Locale::Po4a::Po->new();
    # PO-bestand lezen
    $pofile->read('file.po');
    # Een item toevoegen
    $pofile->push('msgid' => 'Hello', 'msgstr' => 'bonjour',
                  'flags' => "wrap", 'reference'=>'file.c:46');
    # Extract a translation
    $pofile->gettext("Hello"); # geeft 'bonjour' weer
    # Terug naar een bestand schrijven
    $pofile->write('otherfile.po');

BESCHRIJVING

Locale::Po4a::Po is een module die u toelaat berichtencatalogi te manipuleren. U kunt uit bestand lezen/naar bestand schrijven (de extensie ervan is vaak po), u kunt in een oogwenk nieuwe elementen bouwen of om de vertaling van een tekstfragment vragen.

Voor een meer volledige beschrijving van berichtencatalogi in de PO-indeling en hun gebruik kunt u de infodocumentatie van het gettext-programma (sectie "'PO-bestanden"') raadplegen.

Deze module is een onderdeel van het po4a-project, dat tot doel heeft PO-bestanden (oorspronkelijk ontworpen om de vertaling van programmaberichten te vergemakkelijken) te gebruiken om alles te vertalen, waaronder documentatie (man-pagina's, infohandleidingen), pakketbeschrijvingen, debconf-sjablonen en alles wat hiervan kan profiteren.

MOGELIJKE OPTIES BIJ DEZE MODULE

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).
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.

Het adres instellen voor het rapporteren van msgid-bugs. Standaard bevatten de gecreëerde POT-bestanden niet het veld Report-Msgid-Bugs-To.
Instellen van de copyrighthouder in de POT-header. De standaardwaarde is "Free Software Foundation, Inc."
Instellen van de pakketnaam voor de POT-header. Standaard is dat "PACKAGE".
Instellen van de pakketversie voor de POT-header. Standaard is dat "VERSION".

Functies met betrekking tot volledige berichtencatalogi

Creëert een nieuwe berichtencatalogus. Als er een argument opgegeven wordt, is het de naam van een PO-bestand dat geladen moet worden.
Leest een PO-bestand (waarvan de naam als argument opgegeven werd). Elementen in self die reeds eerder bestonden, worden niet verwijderd, nieuwe worden aan het einde van de catalogus toegevoegd.
Schrijft de huidige catalogus naar het opgegeven bestand.
Zoals write, maar als het PO- en het POT-bestand reeds bestaan, wordt het object naar een tijdelijk bestand geschreven, dat vergeleken wordt met het bestaande bestand om na te gaan of de update nodig is (dit vermijdt dat een POT-bestand gewijzigd wordt, enkel om een regelreferentie of het veld POT-Creation-Date bij te werken).
Deze functie extraheert een catalogus uit een bestaande catalogus. Enkel de elementen die in het opgegeven bestand een referentie hebben, zullen in de resulterende catalogus geplaatst worden.

Deze functie ontleedt zijn argument, zet het om naar een Perl-functie, evalueert deze definitie en filtert de velden waarvoor deze functie de waarde true (waar) teruggeeft.

Soms hou ik van Perl ;)

Functies om een berichtencatalogus te gebruiken voor vertalingen

Zoekt in de huidige catalogus de vertaling op van het als argument opgegeven tekstfragment. De door de functie teruggegeven waarde is het originele (niet-vertaalde) tekstfragment als het tekstfragment onvindbaar is.

Na het te vertalen tekstfragment kunt u een hash van extra argumenten doorgeven. Dit zijn de geldige vermeldingen:

booleaanse operator die aangeeft of we de witruimtes in de tekenreeks als onbelangrijk kunnen beschouwen. Indien het antwoord ja is, canoniseert de functie het tekstfragment voordat de vertaling ervan opgezocht wordt en past ze regelafbreking toe op het resultaat.
de kolom waar de regelafbreking moet gebeuren (standaard: 76).
the context string value to be used as the msgctxt field <https://www.gnu.org/software/gettext/manual/html_node/Contexts.html> in gettext PO files. It is empty by default, meaning no context is assigned to the message. When a context is provided, it first searches for messages matching that context; if none are found, it falls back to searching for messages with an empty context. This fallback behavior ensures backward compatibility.
Bezorgt statistieken over de succesratio van gettext sinds de laatste keer dat stats_clear() aangeroepen werd. Merk op dat dit niet dezelfde statistieken zijn dan die welke door msgfmt --statistic weergegeven worden. Hier betreft het statistieken over het recente gebruik van het PO-bestand, terwijl msgfmt rapporteert over de toestand van het bestand. Een gebruiksvoorbeeld:

    [het PO-bestand gebruiken om zaken te vertalen]
    ($percent,$hit,$queries) = $pofile->stats_get();
    print "Tot nu werden in $percent\%  ($hit op $queries) van de gevallen vertalingen gevonden voor tekstfragmenten.\n";
    
Wist de statistieken over de succesratio van gettext.

Functies voor het bouwen van een berichtencatalogus

Een nieuw element toevoegen aan het einde van de huidige catalogus. De argumenten moeten een hash-tabel vormen. Geldige sleutelwaarden zijn:
het tekstfragment in de originele taal.
de vertaling.
een aanduiding over de vindplaats van dit tekstfragment. Bijvoorbeeld: bestand.c:46 (hetgeen betekent in 'bestand.c' op regel 46). Het kan een door spaties gescheiden lijst zijn wanneer het meermaals voorkomt.
een hier handmatig (door de vertalers) toegevoegde commentaar. Hier is de indeling vrij.
een commentaar dat automatisch toegevoegd werd door het programma voor het extraheren van tekstfragmenten. Zie de optie --add-comments van het xgettext-programma voor meer informatie.
door spaties gescheiden lijst van alle gedefinieerde vlaggen voor dit element.

Geldige vlaggen zijn: c-text, python-text, lisp-text, elisp-text, librep-text, smalltalk-text, java-text, awk-text, object-pascal-text, ycp-text, tcl-text, wrap, no-wrap en fuzzy.

Raadpleeg de gettext-documentatie voor hun betekenis.

dit is een hoofdzakelijk intern argument: het wordt gebruikt bij het uitvoeren van gettextize op documenten. Het idee hier is om zowel het origineel als de vertaling te ontleden naar een PO-object en deze samen te voegen door de msgid van het ene als msgid te gebruiken en het msgid van het andere als msgstr. Om te verzekeren dat de zaken goed verlopen, krijgt elke msgid in PO-objecten op basis van zijn structuur (zoals "chapt", "sect1", "p" enzovoort in DocBook) een type toegewezen. Indien tekstfragmenten niet hetzelfde type hebben, betekent dit dat beide bestanden niet dezelfde structuur hebben en zal het proces een fout rapporteren.

Deze informatie wordt als automatische commentaar opgeschreven in het PO-bestand, omdat dit vertalers enige context geeft over de te vertalen tekstfragmenten.

booleaanse operator die aangeeft of witruimte kan aangepast worden in het kader van cosmetische opmaakaanpassingen. Indien de waarde true (waar) is, wordt het tekstfragment voor gebruik gecanoniseerd.

Deze informatie wordt opgeschreven in het PO-bestand met de vlaggen wrap (indien waar) of no-wrap (indien niet waar).

genegeerd; de sleutel wordt bewaard voor achterwaartse compatibiliteit.

Allerhande functies

Rapporteert het aantal elementen in de catalogus (zonder de header).
Rapporteert het aantal elementen in het document. Indien een tekstfragment meerdere keren voorkomt in het document, zal het meerdere keren geteld worden.
Geeft het msgid terug van het opgegeven getal.
Geeft het msgid terug dat de opgegeven positie in het document bekleedt.
Het geeft als resultaat het type van de msgid en de positie ervan in het document. Dit is waarschijnlijk alleen nuttig voor gettextisatie, en het wordt apart van {$msgid}{'type'} opgeslagen omdat de latere locatie kan worden overschreven met een ander type wanneer de $msgid wordt gedupliceerd in het hoofddocument.
Rapporteert de in de PO-header opgegeven tekenset. Indien dit daar niet ingesteld werd, zal het "UTF-8" rapporteren.
Een kleine hulpprogrammafunctie die een tekenreeks teruggeeft met de juiste "--no-wrap"/"--width" gettext-hulpprogrammaopties die overeenkomen met de gegeven wrap-po-waarde.
This method iterates over each message in the PO file and processes it. It takes a subroutine reference and executes it with two arguments: 1) the "msgid" and 2) a hash reference containing the message content, which includes fields such as "msgstr".
This method takes two parameters: the current "msgid" and the new "msgid". It removes the entry with the current "msgid" from the PO instance and reinserts it under the new "msgid" value.
This method takes a document position and returns the matching message as a list containing three elements: the "msgid", the "msgctxt", and the message content (which includes fields such as "msgstr").
This method takes a "msgid" and an optional "msgctxt", and returns the first matching message content, which includes fields such as "msgstr". If no "msgctxt" is provided, an empty string value is used. If no message entry is found with the given context, the method falls back to searching for a message without context.

AUTEURS

 Denis Barbier <barbier@linuxfr.org>
 Martin Quinson (mquinson#debian.org)
2026-03-23 perl v5.42.0