Locale::Po4a::Po(3pm) | Po4a-hulpmiddelen | Locale::Po4a::Po(3pm) |
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 element toevoegen $pofile->push('msgid' => 'Hello', 'msgstr' => 'bonjour', 'flags' => "wrap", 'reference'=>'file.c:46'); # Een vertaling extraheren $pofile->gettext("Hello"); # geeft als terugkeer 'bonjour' # Terug naar een bestand schrijven $pofile->write('anderbestand.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¶
- --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.
- --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".
Functies met betrekking tot volledige berichtencatalogi¶
- new()
- Creëert een nieuwe berichtencatalogus. Als er een argument opgegeven wordt, is het de naam van een PO-bestand dat geladen moet worden.
- read($)
- 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.
- write($)
- Schrijft de huidige catalogus naar het opgegeven bestand.
- write_if_needed($$)
- 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).
- gettextize($$)
- Deze functie produceert een vertaalde berichtencatalogus op basis van twee catalogi, een origineel en een vertaling. Dit proces wordt beschreven in po4a(7), afdeling Gettextize-proces: hoe werkt het?.
- filter($)
- 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 ;)
- to_utf8()
- Zet de msgstrs in het PO-bestand om naar UTF-8 . Doet niets indien de tekenset in het PO-bestand niet gespecificeerd werd (waarde van "CHARSET"), of indien deze reeds UTF-8 of ASCII is.
Functies om een berichtencatalogus te gebruiken voor vertalingen¶
- gettext($%)
- 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:
- wrap
- 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.
- wrapcol
- de kolom waar de regelafbreking moet gebeuren (standaard: 76).
- stats_get()
- 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:
[een zeker gebruik van het PO-bestand 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";
- stats_clear()
- Wist de statistieken over de succesratio van gettext.
Functies voor het bouwen van een berichtencatalogus¶
- push(%)
- Een nieuw element toevoegen aan het einde van de huidige catalogus. De argumenten moeten een hash-tabel vormen. Geldige sleutelwaarden zijn:
- msgid
- het tekstfragment in de originele taal.
- msgstr
- de vertaling.
- reference
- 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.
- comment
- een hier handmatig (door de vertalers) toegevoegde commentaar. Hier is de indeling vrij.
- automatic
- 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.
- flags
- 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.
- type
- 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.
- wrap
- 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).
- wrapcol
- de kolom waar de regelafbreking moet gebeuren (standaard: 76).
Deze informatie wordt niet opgeschreven in het PO-bestand.
Diverse functies¶
- count_entries()
- Rapporteert het aantal elementen in de catalogus (zonder de header).
- count_entries_doc()
- Rapporteert het aantal elementen in het document. Indien een tekstfragment meerdere keren voorkomt in het document, zal het meerdere keren geteld worden.
- equals_msgid(po)
- Geeft ($uptodate, $diagnostic) terug, waarbij
$uptodate aangeeft of alle msgid van het huidige
po-bestand ook aanwezig zijn in het bestand dat als parameter opgegeven
werd (bij het vergelijken van de bestanden worden alle andere velden
genegeerd). Indien $uptodate de waarde onwaar
(false) teruggeeft, zouden de po-bestanden gewijzigd worden, mocht
po4a-updatepo uitgevoerd worden.
Indien $uptodate onwaar is, dan bevat $diagnostic diagnostische informatie over waarom dat zo is.
- msgid($)
- Geeft het msgid terug van het opgegeven getal.
- msgid_doc($)
- Geeft het msgid terug dat de opgegeven positie in het document bekleedt.
- get_charset()
- Rapporteert de in de PO-header opgegeven tekenset. Indien dit daar niet ingesteld werd, zal het "UTF-8" rapporteren.
- set_charset($)
- Stelt in de PO-header de tekenset in op de waarde die in het eerste argument opgegeven werd. Indien u deze functie nooit aanroept (en er geen bestand met een specifieke tekenset gelezen wordt), blijft de standaardwaarde behouden op "UTF-8". Deze waarde wijzigt het gedrag van deze module niet, zij wordt enkel gebruikt om dat veld in de header in te vullen en dat bij get_charset() terug te zenden.
AUTEURS¶
Denis Barbier <barbier@linuxfr.org> Martin Quinson (mquinson#debian.org)
2021-09-20 | Po4a-hulpmiddelen |