Provided by: po4a_0.66-1_all 

NAME
po4a-gettextize - konvertiert eine Originaldatei (und ihre Übersetzungen) in eine PO-Datei
ÜBERSICHT
po4a-gettextize -f Fmt -m Master.dok [-l XX.dok] -p XX.po
(XX.po ist die Ausgabe, alles andere sind Eingaben)
BESCHREIBUNG
Po4a (PO für alles) erleichtert die Pflege von Dokumentationsübersetzungen mittels der klassischen
Gettext-Werkzeuge. Die Hauptfunktionalität von Po4a besteht darin, dass sie die Übersetzung des
Dokumenteninhaltes von der Dokumentenstruktur entkoppelt. Bitte schauen Sie in die Seite po4a(7) für eine
schonende Einführung in dieses Projekt.
Das Skript po4a-gettextize ist dafür verantwortlich, Dokumentationsdateien in PO-Dateien zu konvertieren.
Sie benötigen es nur, um Ihr Übersetzungsprojekt mit Po4a einzurichten, niemals danach.
Falls Sie ganz von Vorne anfangen, wird po4a-gettextize die übersetzbaren Zeichenketten aus der
Dokumentation entnehmen und in eine POT-Datei schreiben. Falls Sie eine bereits übersetzte Datei mit dem
Schalter -l bereitstellen, wird po4a-gettextize versuchen, die darin enthaltenen Übersetzungen in der
erstellten PO-Datei zu verwenden. Dieser Prozess bleibt mühsam und händisch, wie dies im Abschnitt
»Umwandlung einer händischen Übersetzung nach Po4a« weiter unten beschrieben ist.
Falls das Master-Dokument Zeichen außerhalb von ASCII enthält, wird die neuerstellte PO-Datei
UTF-8-kodiert sei. Andernfalls (falls das Master-Dokument komplett ASCII-kodiert ist) wird die erstellte
PO-Datei die Kodierung des übersetzten Eingabedokuments oder UTF-8, falls kein übersetztes Dokument
bereitgestellt wird, verwenden.
OPTIONEN
-f, --format
Format der Dokumentation, mit der Sie arbeiten möchten. Verwenden Sie die Option --help-format, um
eine Liste der verfügbaren Formate zu erhalten.
-m, --master
Datei, die das zu übersetzende Master-Dokument enthält. Sie können diese Option mehrfach verwenden,
falls Sie mehrere Dokumente mit Gettext behandeln möchten.
-M, --master-charset
Zeichensatz der Datei, die das zu übersetzende Dokument enthält.
-l, --localized
Datei, die das lokalisierte (übersetzte) Dokument enthält. Falls Sie mehrere Master-Dateien angeben,
könnte es sinnvoll sein, mehrere lokalisierte Dateien durch mehrfache Verwendung dieser Option
anzugeben.
-L, --localized-charset
Zeichensatz der Datei, die das lokalisierte Dokument enthält.
-p, --po
Datei, in die der Nachrichtenkatalog geschrieben werden soll. Falls keine angegeben ist, wird der
Nachrichtenkatalog auf die Standardausgabe geschrieben.
-o, --option
Extraoption(en), die an die Formaterweiterung übergeben werden soll. Lesen Sie die Dokumentation
jeder Erweiterung für weitere Informationen über die gültigen Optionen und ihre Bedeutungen.
Beispielsweise könnten Sie dem AsciiDoc-Auswerter »-o tablecells« übergeben, während der Text-
Auswerter »-o tabs=split« akzeptierte.
-h, --help
zeigt eine kurze Hilfemeldung an
--help-format
die von Po4a verstandenen Dokumentationsformate auflisten
-V, --version
zeigt die Version des Skripts und beendet sich
-v, --verbose
Erhöhen der Ausführlichkeit des Programms
-d, --debug
Fehlersuch- (Debug-)Informationen ausgeben
--msgid-bugs-address e-mail@adresse
Setzt die E-Mail-Adresse, an die Fehler in den Meldungen (msgid) berichtet werden sollen.
Standardmäßig 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. Standardmäßig ist dies »Free Software
Foundation, Inc.«.
--package-name Zeichenkette
Setzt den Paketnamen für die POT-Kopfzeilen. Standardmäßig »PACKAGE«.
--package-version Zeichenkette
Setzt die Paketversion für die POT-Kopfzeilen. Standardmäßig »VERSION«.
Umwandlung einer händischen Übersetzung nach Po4a
po4a-gettextize wird versuchen, den Inhalt jeder bereitgestellten Übersetzungsdatei auszulesen und diesen
Inhalt als msgstr in der erstellten PO-Datei zu verwenden. Warnung: Dieser Prozess ist sehr fragil: es
wird angenommen, dass die N-te Zeichenkette in der übersetzten Datei der N-ten Zeichenkette im Original
entspricht. Das wird natürlich nur funktionieren, wenn beide Dateien über die gleiche Struktur verfügen.
Intern berichtet jedes Po4a-Auswerteprogramm den syntaktischen Typ jeder ausgelesenen Zeichenkette. Damit
werden während der Gettextisierung Desynchronisationen erkannt. Falls die Dateien zum Beispiel die
folgende Struktur haben, ist es sehr unwahrscheinlich, dass die vierte Zeichenkette der Übersetzung (vom
Typ »Kapitel«) die Übersetzung der vierten Zeichenkette des Originals (vom Typ »Absatz«) ist. Es ist
wahrscheinlicher, dass ein neuer Absatz im Ursprungsdokument hinzugefügt oder dass zwei Absätze in der
Übersetzung zusammengefasst wurden.
Original Übersetzung
Kapitel Kapitel
Absatz Absatz
Absatz Absatz
Absatz Kapitel
Kapitel Absatz
Absatz Absatz
po4a-gettextize wird jede erkannte Strukturdesynchronisation ausführlich diagnostizieren. Wenn dies
passiert, sollten Sie die Dateien manuell bearbeiten (das verlangt, dass Sie über ein gewisses
Verständnis der Zielsprache verfügen). Sie müssen Pseudo-Absätze hinzufügen oder einigen Inhalt in einem
der beiden (oder beiden) Dokumente(n) entfernen, um die berichteten Unstimmigkeiten zu korrigieren, bis
die Struktur beider Dokumente perfekt passt. Hierzu werden im nächsten Abschnitt einige Tricks gezeigt.
Selbst wenn das Dokument erfolgreich verarbeitet wurde, sind unerkannte Unterschiede und nicht berichtete
Fehler weiterhin möglich. Daher werden sämtliche automatisch durch po4a-gettextize zugeordnete
Übersetzungen mit fuzzy markiert, um eine händische Untersuchung durch Menschen zu verlangen. Es muss
geprüft werden, ob jede ermittelte msgstr genau die Übersetzung der zugehörigen msgid und nicht die der
Zeichenkette davor oder dahinter ist.
Wie Sie erkennen können, liegt der Schlüssel darin, dass beide Dokumente die exakt gleiche Struktur
haben. Daher erfolgt die Gettextisierung am besten mit genau der gleichen Version der master.dok, die
auch für die Übersetzung verwandt wurde. Die Aktualisierung der Po-Datei mit der neusten Master-Datei
sollte dann erst erfolgen, wenn die Gettextisierung erfolgreich war.
Falls Sie Glück haben und die Dateistrukturen genau passen, ist die Erstellung einer PO-Datei eine Frage
von Sekunden. Andernfalls werden Sie schnell verstehen, warum dieser Prozess einen so scheußlichen Namen
hat :). Denken Sie daran, dass diese Routinearbeit der Preis ist, den Sie zur Nutzung des Komforts von
Po4a danach zahlen müssen. Sobald die Konvertierung erfolgte, ist die Synchronisation zwischen dem
Master-Dokument und den Übersetzungen immer voll automatisch.
Selbst wenn Sachen schieflaufen ist Gettextisierung schneller als eine komplette Neuübersetzung. Ich
konnte die existierende französische Übersetzung der gesamten Perl-Dokumentation an einem Tag
gettextisieren, obwohl die Struktur vieler Dokumente nicht synchron war. Das waren mehr als zwei Megabyte
an ursprünglichem Text (2 Millionen Zeichen). Eine Neuübersetzung von Anfang an hätte mehrere Monate
Arbeit benötigt.
Tipps und Tricks für den Gettextisierungsprozess
Die Gettextisierung endet, sobald eine Desynchronisierung erkannt wurde. Theoretisch sollte es möglich
sein, die Gettextisierung später im Dokument wieder zu synchronisieren, z.B. mit dem gleichen
Algorithmus, den auch das Hilfswerkzeug diff(1) verwendet. Allerdings wäre eine händische Intervention
weiterhin notwendig, um die Elemente, die nicht automatisch zugeordnet werden konnten, manuell
zuzuordnen. Dies erklärt, warum (noch?) keine automatische Resynchronisation implementiert wurde.
Wenn dies passiert, besteht die gesamte Aufgabe darin, die blöden Dateistrukturen durch manuelle
Bearbeitungen wieder in Einklang zu bringen. po4a-gettextize erklärt relativ ausführlich, was falsch
lief, wenn dies passiert. Es werden die Zeichenketten berichtet, die nicht zueinander passen, ihre
Position im Text und ihre Typ. Desweiteren wird die soweit generierte PO-Datei in
gettextization.failed.po zur weiteren Untersuchung ausgegeben.
Hier sind weitere Tricks, die Ihnen bei diesem mühsamen Prozess helfen:
• Entfernen Sie sämtlichen zusätzlichen Inhalt der Übersetzung, wie beispielsweise Absätze, die den
Übersetzern danken. Sie können diese in Po4a anschließend wieder mittels Addenda hinzufügen (siehe
po4a(7)).
• Falls Sie die Dateien bearbeiten müssen, um ihre Strukturen abzugleichen, sollten Sie bevorzugt die
Übersetzung bearbeiten. Falls die Änderungen am Original zu umfangreich sind, passen die alten und
neuen Versionen während der PO-Aktualisierung nicht mehr zusammen und die entsprechende Überestzung
wird trotzdem verworfen. Haben Sie aber keine Scheu, falls notwendig auch das Ursprungsdokument zu
bearbeiten: das Wichtigste ist, eine erste PO-Datei zum Starten zu bekommen.
• Haben Sie keine Scheu, ursprüngliche Inhalte zu löschen, die in der übersetzten Version nicht
erscheinen würden. Dieser Inhalt wird danach automatisch wieder eingefügt, wenn die PO-Datei mit dem
Dokument synchronisiert wird.
• Sie sollten wahrscheinlich den Ursprungsautor über sämtliche gerechtfertigten Strukturänderungen in
der Übersetzung informieren. Probleme in dem Ursprungsdokument sollten an den Autor berichtet werden.
Wenn Sie diese nur in Ihrer Übersetzung korrigieren, werden diese nur für einen Teil der Gemeinschaft
korrigiert. Und desweiteren ist das unmöglich, wenn Sie Po4a verwenden ;)
• Manchmal passen die Inhalte des Absatzes, aber ihr Typ nicht. Dies zu korrigieren hängt stark vom
Format ab. In POD und Man kommt dies oft daher, dass bei einem der beiden eine Zeile enthalten ist,
die mit einem Leerzeichen beginnt. In diesen Formaten kann so ein Absatz nicht umgebrochen werden und
erhält daher einen anderen Typ. Entfernen Sie einfach das Leerzeichen und es klappt wieder. Es kann
sich auch um einen Tippfehler im Namen der Markierung (Tags) in XML handeln.
Entsprechend könnten zwei Absätze in POD zusammengefasst worden sein, wenn die trennende Zeile
Leerzeichen enthält oder wenn es keine Leerzeile zwischen der =item-Zeile und dem Inhalt des »item«s
gibt.
• Manchmal erscheinen die Desynchronisationsmeldungen komisch, da die Übersetzung an einen falschen
Ursprungsabsatz angehängt ist. Dies ist ein Zeichen eines vorhergehenden und unerkannten Problems
früher im Prozess. Suchen Sie nach dem tatsächlichen Desynchronisationspunkt, indem Sie
gettextization.failed.po untersuchen, und beheben Sie das Problem, wo es wirklich ist.
• In manchen unglücklichen Umständen werden Sie das Gefühl bekommen, dass Po4a Teile des Texts
aufgefuttert hat, entweder vom Original oder von der Übersetzung. gettextization.failed.po können Sie
entnehmen, dass beide Dateien bis zum Absatz N wie erwartet passten. Dann wird aber ein (nicht
erfolgreicher) Versuch unternommen, den Absatz N+1 in der Ursprungsdatei nicht dem Absatz N+1 in der
Übersetzung zuzuordnen, wie dies der Fall sein sollte, sondern dem Absatz N+2. So als ob der Absatz
N+1, den Sie in dem Dokument gesehen haben, einfach während des Prozesses aus der Datei verschwunden
wäre.
Diese unglückliche Situation entsteht, wenn ein Absatz mehrfach im Dokument vorkommt. In diesem Fall
wird kein neuer Eintrag in der PO-Datei erstellt, sondern es wird stattdessen eine neue Referenz zu
dem bestehenden hinzugefügt.
Die vorhergehende Situation taucht also auf, wenn zwei ähnliche aber verschiedene Absätze auf die
gleiche Weise übersetzt werden. Dies wird anscheinend einen Absatz der Übersetzung entfernen. Um das
Problem zu beheben, reicht es aus, einen der Übersetzungen leicht zu verändern. Sie können auch den
zweiten Absatz im Ursprungsdokument entfernen.
Im gegenteiligen Fall, wenn der gleiche Absatz zweimal im Ursprungsdokument auftaucht, aber nicht auf
die gleiche Weise an beiden Stellen übersetzt ist, werden Sie das Gefühl bekommen, dass ein Absatz im
Ursprungsdokument einfach verschwunden wäre. Kopieren Sie einfach die beste Übersetzung über die
andere in dem übersetzten Dokument, um das Problem zu beheben.
• Abschließend sei bemerkt, dass Sie nicht zu überrascht sein sollten, wenn die erste Synchronisation
Ihrer PO-Datei sehr lange dauert. Dies kommt daher, dass die meisten msgid der aus der
Gettextisierung entstehenden PO-Datei nicht genau auf ein Element der POT-Datei, die aus der neuen
Master-Datei gebaut wurde, passen. Dies zwingt Gettext, mit einem aufwändigen Zeichenketten-
Umgebungssuche-Algorithmus nach dem ähnlichsten zu suchen.
Beispielsweise benötigte die erste po4a-updatepo der Perl-Dokumentation der französischen Übersetzung
(5,5 MB PO-Datei) rund 48 Stunden (ja, zwei Tage), während nachfolgende Läufe nur noch ein Dutzend
Sekunden benötigten.
SIEHE AUCH
po4a(1), po4a-normalize(1), po4a-translate(1), po4a-updatepo(1), po4a(7).
AUTOREN
Denis Barbier <barbier@linuxfr.org>
Nicolas François <nicolas.francois@centraliens.net>
Martin Quinson (mquinson#debian.org)
URHEBERRECHT UND LIZENZ
Copyright 2002-2020 SPI, Inc.
Dieses Programm ist freie Software; Sie können es unter den Bedingungen der GPL (siehe die Datei COPYING)
vertreiben und/oder verändern.
Po4a-Werkzeuge 2022-01-02 PO4A-GETTEXTIZE(1p)