LOCALE::PO4A::PO.3PM(1) User Contributed Perl Documentation NAME Locale::Po4a::Po - PO-Dateien-Manipulationsmodul UBERSICHT use Locale::Po4a::Po; my $pofile=Locale::Po4a::Po->new(); # PO-Datei einlesen $pofile->read('Datei.po'); # Einen Eintrag hinzufugen $pofile->push('msgid' => 'Hallo', 'msgstr' => 'bonjour', 'flags' => "wrap", 'reference'=>'file.c:46'); # Eine Ubersetzung extrahieren $pofile->gettext("Hello"); # liefert >>bonjour<< # In eine Datei zuruckschreiben $pofile->write('andereDatei.po'); BESCHREIBUNG Locale::Po4a::Po ist ein Modul, das Ihnen die Bearbeitung von Nachrichtenkatalogen ermoglicht. Sie konnen eine Datei laden und in sie schreiben (deren Erweiterung oft po lautet), Sie konnen dynamisch neue Eintrage hinzufugen oder um die Ubersetzung einer Zeichenkette bitten. Fur eine umfangreichere Beschreibung der Nachrichtenkataloge im PO- Format und ihren Einsatz lesen Sie bitte die Info-Dokumentation des Gettext-Programms (Knoten >>PO Files<<). Dieses Modul ist Teil des Po4a-Projekts, dessen Ziel es ist, PO-Dateien (ursprunglich dazu erstellt, um die Ubersetzung von Programmmeldungen zu erleichtern) zur Ubersetzung von allem einzusetzen, darunter Dokumentation (Handbuchseiten, Info-Handbucher), Paketbeschreibungen, Debconf-Vorlagen und allem, das daraus Nutzen ziehen kann. VON DIESEM MODUL AKZEPTIERTE OPTIONEN --porefs Typ Gibt das Referenzformat an. Das Argument Typ kann entweder never (keine Referenz erzeugen), file (nur die Datei ohne Zeilenzahlen festlegen), counter (alle Zeilennummern durch einen ansteigenden Zahler ersetzen) oder full (komplette Referenzen einbinden) sein. Die Vorgabe ist >>full<<. --wrap-po no|newlines|Zahl (Vorgabe: 76) Legt fest, wie die PO-Datei umgebrochen werden soll. Dies ermoglicht die Auswahl zwischen Dateien, die schon umgebrochen sind aber zu GIT-Konflikten fuhren konnen oder Dateien, die leichter automatisch handzuhaben, aber schwerer fur Menschen zu lesen sind. Aus kosmetischen Grunden hat die Gettext-Programmsammlung PO- Dateien in der 77.Spalte umgebrochen. Diese Option legt das Verhalten von Po4a fest. Falls auf einen numerischen Wert gesetzt, wird Po4a die PO-Datei nach dieser Spalte und nach Zeilenumbruchen im Inhalt umbrechen. Falls auf newlines gesetzt, wird Po4a die msgid und msgstr nur nach Zeilenumbruchen im Inhalt auftrennen. Falls auf no gesetzt, wird Po4a die PO-Datei uberhaupt nicht umbrechen. Die Referenzkommentare werden durch die von Po4a intern verwandten Gettext-Werkzeuge immer umgebrochen. Beachten Sie, dass diese Option keine Auswirkung darauf hat, wie msgid und msgstr umgebrochen werden, d.h. wie Zeilenumbruche zu dem Inhalt dieser Zeilen hinzugefugt werden. --msgid-bugs-address e-mail@adresse Setzt die E-Mail-Adresse, an die Fehler in den Meldungen (msgid) berichtet werden sollen. Standardmassig haben die erstellten POT- Dateien keine >>Report-Msgid-Bugs-To<<-Felder. --copyright-holder Zeichenkette Setzt den Namen des Urhebers in den Kopfzeilen der POT-Datei. Standardmassig ist dies >>Free Software Foundation, Inc.<<. --package-name Zeichenkette Setzt den Paketnamen fur die POT-Kopfzeilen. Standardmassig >>PACKAGE<<. --package-version Zeichenkette Setzt die Paketversion fur die POT-Kopfzeilen. Standardmassig >>VERSION<<. Funktionen, die gesamte Nachrichtenkataloge betreffen new() Erstellt einen neuen Nachrichtenkatalog. Falls ein Argument angegeben ist, ist es der Name der PO-Datei, die geladen werden soll. read($) Liest eine PO-Datei ein (deren Namen als Argument ubergeben wird). Vorherige Eintrage in >>self<< werden nicht entfernt, die neuen werden am Ende des Katalogs hinzugefugt. write($) schreibt den aktuellen Katalog in die ubergebene Datei write_if_needed($$) Wie write, aber falls die PO- oder POT-Datei bereits existiert, wird das Objekt in eine temporare Datei geschrieben, die mit der bestehenden Datei verglichen wird, um zu uberprufen, ob eine Aktualisierung benotigt wird (dies vermeidet eine Anderung an der POT-Datei, um lediglich eine Zeilenreferenz oder das Feld >>POT-Creation-Date<< zu aktualisieren). filter($) Diese Funktion lost einen Katalog aus einem bestehenden heraus. Nur die Eintrage, die eine Referenz in der angegebenen Datei haben, werden in dem resultierenden Katalog eingefugt. Diese Funktion wertet ihr Argument aus, konvertiert es in eine Perl-Funktionsdefinition, wertet diese Definition aus und filtert die Felder heraus, fur die diese Funktion wahr zuruckliefert. Manchmal liebe ich Perl ;) Funktionen, die einen Nachrichtenkatalog fur Ubersetzungen verwenden gettext($%) Erbittet die Ubersetzung der als Argument ubergebenen Zeichenkette im aktuellen Katalog. Die Funktion liefert die ursprungliche (unubersetzte) Zeichenkette zuruck, falls die Zeichenkette nicht gefunden wurde. Nach der zu ubersetzenden Zeichenkette konnen Sie einen Hash mit zusatzlichen Argumenten ubergeben. Dabei gibt es die folgenden gultigen Eintrage: wrap Logische Variable, die angibt, ob davon ausgegangen werden kann, dass Leerzeichen in Zeichenketten nicht wichtig sind. Falls ja, uberfuhrt die Funktion die Zeichenkette in eine kanonische Form, bevor sie nach einer Ubersetzung sucht, und bricht das Ergebnis um. wrapcol die Spalte, an der umgebrochen werden soll (standardmassig 76) stats_get() Liefert Statistiken uber das Trefferverhaltnis von Gettext seit dem letzten Aufruf von stats_clear() zuruck. Beachten Sie, dass dies nicht die gleiche Statistik ist, die von >>msgfmt --statistic<< ausgegeben wird. Hier berichtet die Statistik uber die kurzliche Verwendung der PO-Datei, wahrend Msgfmt uber den Status der Datei berichtet. Beispiel: [einige Arbeiten mit der PO-Datei, um Zeugs zu ubersetzen] ($percent,$hit,$queries) = $pofile->stats_get(); print "Bisher wurden Ubersetzungen fur $percent\% ($hit von $queries) der Zeichenketten gefunden.\n"; stats_clear() bereinigt die Statistiken uber Gettext-Treffer Funktionen, um einen Katalog mit Meldungen aufzubauen push(%) Schiebt einen neuen Eintrag an das Ende des aktuellen Katalogs. Die Argumente sollten eine Hash-Tabelle darstellen. Die gultigen Schlussel sind: msgid die Zeichenkette in der Ursprungssprache msgstr die Ubersetzung reference eine Angabe, wo die Zeichenkette gefunden wurde. Beispiel: Datei.c:46 (d.h. in Datei.c, Zeile 46). Es kann eine durch Leerzeichen getrennte Liste sein, falls die Zeichenkette mehrfach vorkommt. comment ein manuell (vom Ubersetzer) hinzugefugter Kommentar. Das Format ist hier frei. automatic ein automatisch hinzugefugter Kommentar, der vom Zeichenkettenausleseprogramm hinzugefugt wurde. Lesen Sie zu der Option >>--add-comments<< des Programms xgettext fur weitere Informationen hierzu. flags durch Leerzeichen getrennte Liste aller definierten Schalter fur diesen Eintrag. Gultige Schalter sind: 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 und fuzzy. Lesen Sie die Getttext-Dokumentation bezuglich ihrer Bedeutung. type Dies ist hauptsachlich ein internes Argument: Es wird beim Einbau von Gettext in Dokumente verwandt. Die Idee hierbei ist, sowohl das Original als auch die Ubersetzung in ein PO-Objekt auszuwerten und sie dann zusammenzufuhren, wobei die Mgsids des einen die Msgids werden und die Mgsgids des anderen die Msgstr. Um sicherzustellen, dass alles stimmig wird, wird jeder Msgid in PO-Objekten ein Typ vergeben, basierend auf ihrer Struktur (wie >>chapt<<, >>sect1<<, >>p<< und so weiter in Docbook). Falls die Typen der Zeichenketten nicht ubereinstimmen, bedeutet dies, dass die beiden Dateien nicht uber die gleiche Struktur verfugen. Der Prozess liefert dann eine Fehlermeldung. Diese Information wird als automatischer Kommentar in die PO- Datei geschrieben, da dies den Ubersetzern Kontext zu den zu ubersetzenden Zeichenketten liefert. wrap Logische Variable, die angibt, ob Leerzeichen bei kosmetischen Neuformatierungen gequetscht werden durfen. Falls wahr, wird die Zeichenkette vor der Verwendung in eine kanonische Form gebracht. Diese Information wird mit dem Schalter wrap oder no-wrap in die PO-Datei geschrieben. wrapcol ignoriert; dieser Schlussel wird fur altere Berechnung beibehalten. Verschiedene Funktionen count_entries() liefert die Anzahl an Eintragen im Katalog (ohne die Kopfzeilen) count_entries_doc() Liefert die Anzahl der Eintrage im Dokument. Falls eine Zeichenkette mehrfach im Dokument auftaucht, wird sie auch mehrfach gezahlt. msgid($) liefert die Msgid der angegebenen Nummer msgid_doc($) liefert die Msgid mit der angegebenen Position im Dokument type_doc($) Liefert den Typ der Msgid mit der angegebenen Position im Dokument zuruck. Dies ist wahrscheinlich nur fur die Gettextisierung nutzlich, und es wird separat von {$msgid}{'type'} gespeichert, da letzterer Ort durch einen anderen Typ uberschrieben werden konnte, falls die $msgid im Master-Dokument mehrfach vorkommt. get_charset() gibt den in den PO-Kopfzeilen definierten Zeichensatz zuruck. Falls er nicht gesetzt wurde, wird >>UTF-8<< zuruckgegeben. AUTOREN Denis Barbier Martin Quinson (mquinson#debian.org) perl v5.38.2 2024-06-26 LOCALE::PO4A::PO.3PM(1)