PO4A(7) | Po4a-Werkzeuge | PO4A(7) |
Po4a - Rahmenwerk zur Übersetzung von Dokumentation und anderen Materialien
Po4a (PO für alles) erleichtert die Pflege von Dokumentationsübersetzungen mittels der klassischen Gettext-Werkzeuge. Die Hauptfunktionalität von Po4a ist, dass sie die Übersetzung des Inhaltes von der Dokumentenstruktur trennt.
Dieses Dokument dient als Einführung in das Po4a-Projekt mit einem Fokus auf mögliche Benutzer, die überlegen, ob sie dieses Werkzeug verwenden sollten und den Neugierigen, die verstehen möchten, warum die Dinge so sind, wie sie sind.
Die Philosophie Freier Software ist es, die Technik wirklich für jeden verfügbar zu machen. Aber Lizenzierung ist nicht die einzige Betrachtung: nicht übersetzte Freie Software ist für nicht englisch sprechende Personen nutzlos. Daher haben wir noch einiges zu tun, Software für jede Person verfügbar zu machen.
Von den meisten Projekten wird diese Situation sehr gut verstanden und jeder ist jetzt von der Notwendigkeit, alles zu übersetzen, überzeugt. Allerdings stellt die eigentliche Übersetzung einen riesengroßen Aufwand durch viele Beteiligte dar, die zudem von kleinen technischen Schwierigkeiten behindert werden.
Dankenswerterweise ist Open-Source-Software mittels der Gettext-Werkzeugsammlung sehr gut übersetzt. Diese Werkzeuge werden zum Entnehmen der zu übersetzenden Zeichenketten aus einem Programm verwandt und dann werden diese Zeichenketten in einem standardisierten Format dargestellt (genannt PO-Dateien oder Übersetzungskataloge). Ein gesamtes Ökosystem an Werkzeugen ist entstanden, um Übersetzern beim eigentlichen Übersetzen dieser PO-Dateien zu helfen. Das Ergebnis wird dann von Gettext zur Laufzeit verwandt, um dem Endbenutzer die übersetzten Meldungen anzuzeigen.
Im Hinblick auf Dokumentation ist die Situation allerdings immer noch etwas entäuschend. Anfangs erscheint die Übersetzung der Dokumentation leichter als die Übersetzung eines Programms, da es so aussieht, als müssten Sie nur das Ursprungsdokument kopieren und anfangen, den Inhalt zu übersetzen. Wenn allerdings das Ursprungsdokument verändert wird, wird die Nachverfolgung der Änderungen schnell zu einem Albtraum für Übersetzer. Falls dies manuell erfolgt, ist die Aufgabe unschön und fehlerbehaftet.
Veraltete Übersetzungen sind oft schlimmer als gar keine. Endbenutzer können durch Dokumentation, die veraltetes Verhalten des Programms beschreibt, verwirrt werden. Sie können zudem nicht direkt mit dem Betreuer in Kontakt treten, da sie kein Englisch sprechen. Zusätzlich kann der Betreuer keine Probleme beheben, da er nicht jede Sprache spricht, in die seine Dokumentation übersetzt ist. Diese Schwierigkeiten, die oft durch schlechte Werkzeuge hervorgerufen werden, können die Motivation für freiwillige Übersetzer unterminieren, wodurch das Problem weiter verschlimmert wird.
Das Ziel des Po4a-Projektes ist es, die Arbeit der Dokumentenübersetzer zu erleichtern. Insbesondere macht es die Dokumentenübersetzungen pflegbar.
Die Idee besteht darin, den Gettext-Ansatz für dieses Feld wiederzuverwenden und anzupassen. Wie bei Gettext werden Texte aus ihren ursprünglichen Orten herausgelöst und den Übersetzern als PO-Übersetzungskataloge dargestellt. Die Übersetzer können die klassischen Gettext-Werkzeuge wirksam einsetzen, um die zu erledigende Arbeit zu überwachen, zusammenzuarbeiten und sich als Teams zu organisieren. Po4a fügt dann die Übersetzung direkt in die Dokumentationsstruktur ein, um übersetzte Quelldateien zu erstellen, die dann genau wie die englischen Dateien verarbeitet und verteilt werden können. Jeder Absatz, der nicht übersetzt ist, verbleibt im entstehenden Dokument auf englisch, wodurch sichergestellt ist, dass die Endbenutzer niemals veraltete Übersetzungen in der Dokumentation sehen.
Dies automatisiert den größten Teil der Routinearbeit bei der Wartung von Übersetzungen. Es wird sehr leicht, die zu aktualisierenden Absätze zu erkennen und der Prozess ist vollständig automatisiert, wenn Elemente ohne weitere Änderungen neu sortiert werden. Es können auch spezielle Überprüfungen verwandt werden, um die Möglichkeit von Formatierungsfehlern zu verringern, die zu einem defekten Dokument führen würden.
Bitte lesen Sie auch die FAQ weiter unten in diesem Dokument für eine komplette Liste der Vor- und Nachteile dieser Vorgehensweise.
Derzeit wurde diese Vorgehensweise erfolgreich für mehrere Arten von Textformatierungsformaten umgesetzt:
Das Modul Locale::Po4a::Man(3pm) unterstützt das Format »mdoc«, das von den BSD-Handbuchseiten verwandt wird (diese sind auch unter Linux recht häufig anzutreffen).
Siehe Locale::Po4a::AsciiDoc für Details.
Siehe Locale::Po4a::Pod für Details.
Derzeit werden nur die DebianDoc- und DocBook-DTD unterstützt, aber das Hinzufügen einer Unterstützung für eine neue DTD ist wirklich leicht. Es ist sogar möglich, Po4a für eine unbekannte SGML-DTD zu verwenden, ohne den Code zu verändern, indem die benötigten Informationen auf der Befehlszeile übergeben werden. Lesen Sie Locale::Po4a::Sgml(3pm) für weitere Details.
Das Modul Locale::Po4a::LaTeX(3pm) wurde mit der Python-Dokumentation, einem Buch und ein paar Präsentationen ausprobiert.
Dies unterstützt das häufige in »Static Site Generators«, READMEs und anderen Dokumentationssystemen verwandte Format. Siehe Locale::Po4a::Text(3pm) für Details.
Derzeit werden die DocBook-DTD (siehe Locale::Po4a::Docbook(3pm) für weitere Details) und XHTML von Po4a unterstützt.
Siehe Locale::Po4a::BibTex für Details.
Siehe Locale::Po4a:Docbook für genauere Details.
Siehe Locale::Po4a:Guide für genauere Details.
Siehe Locale::Po4a::Wml für genauere Details.
Siehe Locale::Po4a::Yaml für genauere Details.
Siehe Locale::Po4a::RubyDoc für genauere Details.
Siehe Locale::Po4a:Halibut für genauere Details.
Siehe Locale::Po4a::Ini für genauere Details.
Historisch war Po4a um vier Skripte herum aufgebaut, wobei jedes eine bestimmte Aufgabe erfüllte. po4a-gettextize(1) hilft beim erstmaligen Erzeugen von Übersetzungen und optional der Umwandlung bestehender Übersetzungsprojekte in Po4a. po4a-updatepo(1) spiegelt die Änderungen an der Ursprungsdokumentation in die entsprechenden PO-Dateien. po4a-translate(1) baut übersetzte Quelldateien aus der ursprünglichen Datei und der entsprechenden PO-Datei. Zusätzlich ist po4a-normalize(1) hauptsächlich zur Fehlersuche der Po4a-Auswerteprogramme nützlich, da es ein nicht übersetztes Dokument aus dem ursprünglichen baut. Dies erleichtert es, Störungen zu finden, die aus dem Auswerteprozess stammen.
Most projects only require the features of po4a-updatepo(1) and po4a-translate(1), but these scripts proved to be cumbersome and error prone to use. If the documentation to translate is split over several source files, it is difficult to keep the PO files up to date and build the documentation files correctly. As an answer, a all-in-one tool was provided: po4a(1). This tool takes a configuration file describing the structure of the translation project: the location of the PO files, the list of files to translate, and the options to use, and it fully automates the process. When you invoke po4a(1), it both updates the PO files and regenerate the translation files that need to. If everything is already up to date, po4a(1) does not change any file.
Der Rest dieses Abschnitts gibt einen Überblick über die Skriptschnittstelle von Po4a. Die meisten Benutzer werden wahrscheinlich das Komplettwerkzeug bevorzugen, das in der Dokumentation von po4a(1) beschrieben ist.
Das nachfolgende Schema gibt einen Überblick darüber, wie jedes Po4a-Skript verwandt werden kann. Hier steht master.dok als Beispielname für die zu übersetzende Dokumentation; XX.dok das gleiche Dokument übersetzt in die Sprache XX während doc.XX.po der Übersetzungskatalog für das Dokument in der Sprache XX ist. Dokumentationsautoren kümmern sich hauptsächlich um master.dok (dies kann eine Handbuchseite, ein XML-Dokument, eine Asciidoc-Datei oder ähnliches sein); die Übersetzer kümmern sich hauptsächlich um die PO-Dateien, während die Endbenutzer nur die Datei XX.dok sehen werden.
Master.dok | V +<-----<----+<-----<-----<--------+------->-------->-------+ : | | : {Übersetzung} | { Aktualisierung von Master.dok } : : | | : XX.dok | V V (optional) | Master.dok ->-------->------>+ : | (neu) | V V | | [po4a-gettextize] dok.XX.po--->+ | | | (alt) | | | | ^ V V | | | [po4a-updatepo] | V | | V Übersetzung.pot ^ V | | | dok.XX.po | | | (unscharf) | { Übersetzung } | | | | ^ V V | | {manuelle Bearbeitung} | | | | | V | V V dok.XX.po --->---->+<---<---- doc.XX.po Addendum Master.dok (anfänglich) (aktuell) (optional) (aktuell) : | | | : V | | +----->----->----->------> + | | | | | V V V +------>-----+------<------+ | V [po4a-translate] | V XX.dok (aktuell)
Dieses Schema ist kompliziert, aber in der Praxis wird nur der rechte Teil (der po4a-updatepo(1) und po4a-translate(1) betrifft) verwandt, sobald das Projekt eingerichtet und konfiguriert ist.
Der linke Teil stellt dar, wie po4a-gettextize(1) verwandt werden kann, um ein bestehendes Übersetzungsprojekt in die Po4a-Infrastruktur zu überführen. Dieses Skript akzeptiert ein Ursprungsdokument und sein übersetztes Gegenstück und versucht, eine entsprechende PO-Datei daraus zu bauen. Eine solche manuelle Umwandlung ist recht beschwerlich (lesen Sie die Dokumentation von po4a-gettextize(1) für weitere Details), sie wird aber nur einmalig notwendig, um Ihre bestehende Übersetzungen zu überführen. Falls Sie keine Übersetzungen überführen müssen, können Sie diesen Schritt ignorieren und sich auf den rechten Teil des Schemas konzentrieren.
Ganz oben rechts wird die Aktion der Ursprungsautors dargestellt, der die Dokumentation aktualisiert. Der mittel-rechte Teil stellt die automatischen Aktionen von po4a-updatepo(1) dar. Das neue Material wird herausgelöst und mit der bestehenden Übersetzung verglichen. Die vorherige Übersetzung wird für unveränderte Teile verwandt, während teilweise geänderte Teile mit der vorherigen Übersetzung mit einer »fuzzy«-Markierung verbunden sind, die anzeigt, dass die Übersetzung aktualisiert werden muss. Neues oder stark verändertes Material verbleibt unübersetzt.
Dann stellt manuelle Bearbeitung die Aktionen der Übersetzer dar, die die PO-Dateien verändern, um Übersetzungen für jede Ursprungszeichenkette und jeden Absatz bereitzustellen. Dies kann entweder mit einem speziellen Editor wie dem GNOME-Übersetzungseditor, KDEs Lokalize oder poedit erfolgen, oder mittels einer Online-Lokalisierungsplattform wie Weblate oder Pootle. Das Übersetzungsergebnis ist eine Gruppe von PO-Dateien, eine pro Sprache. Bitte lesen Sie die Gettext-Dokumentation für weitere Details.
Der untere Teil der Abbildung zeigt, wie po4a-translate(1) ein übersetztes Quelldokument aus dem ursprünglichen Dokument master.doc und dem Übersetzungskatakog doc.XX.po, der durch die Übersetzer aktualisiert wurde, erstellt. Die Struktur des Dokuments wird wiederverwandt, während der ursprüngliche Inhalt durch sein übersetztes Gegenstück ersetzt wird. Optional kann ein Addendum verwandt werden, um einigen Extratext zu der Übersetzung hinzuzufügen. Dies wird oft dazu verwandt, den Namen des Übersetzers zum finalen Dokument hinzuzufügen. Sie finden Details hierzu weiter unten.
Wie zuvor angemerkt, kombiniert das Programm po4a(1) die Wirkung der getrennten Skripte, Aktualisierungen der PO-Dateien und des übersetzten Dokumentes in einem Aufruf. Die zugrundeliegende Logik bleibt identisch.
Falls Sie po4a(1) verwenden, gibt es keinen bestimmten Schritt zum Start einer Übersetzung. Sie müssen nur die Sprachen in der Konfigurationsdatei aufführen und die fehlenden PO-Dateien werden automatisch erstellt. Natürlich müssen die Übersetzer dann die Übersetzungen für sämtliche Inhalte in Ihren Dokumenten bereitstellen. po4a(1) erstellt auch eine POT-Datei, das ist eine PO-Vorlagendatei. Mögliche Übersetzer können Ihr Projekt in eine neue Sprache übersetzen, indem sie diese Datei umbenennen und die Übersetzungen in ihrer Sprache bereitstellen.
Falls Sie es bevorzugen, die individuellen Skripte separat zu verwenden, sollten Sie po4a-gettextize(1) wie folgt verwenden, um die POT-Datei zu erstellen. Diese Datei kann dann nach XX.po kopiert werden, um eine neue Übersetzung zu starten.
$ po4a-gettextize --format <Format> --master <Master.dok> --po <Übersetzung.pot>
Das Masterdokument wird als Eingabe, während die POT-Datei als die Ausgabe des Prozesses verwandt wird.
Das hierzu zu verwendende Programm ist po4a-updatepo(1) (bitte lesen Sie dessen Dokumentation für Details):
$ po4a-updatepo --format <Format> --master <neue_Master.dok> --po <alte_dok.XX.po>
Das Master-Dokument wird in der Eingabe verwandt, während die PO-Datei aktualisiert wird: sie wird sowohl in der Ein- als auch der Ausgabe verwandt.
Sobald Sie mit der Übersetzung fertig sind, möchten Sie die übersetzte Dokumentation erhalten und diese dann zusammen mit der ursprünglichen an die Benutzer verteilen. Verwenden Sie hierfür das Programm po4a-translate(1) wie folgt:
$ po4a-translate --format <Format> --master <Master.dok> --po <dok.XX.po> --localized <XX.dok>
Sowohl die Master- als auch die PO-Dateien werden als Eingabe verwandt, während die lokalisierte Datei die Ausgabe dieses Prozesses ist.
Hinzufügen von neuem Text zu der Übersetzung ist wahrscheinlich das einzige, was langfristig bei der manuellen Übersetzung einfacher ist :). Dies kommt vor, wenn Sie einen zusätzlichen Abschnitt zu dem übersetzten Dokument hinzufügen möchten, der nicht zu Inhalten im Ursprungsdokument passt. Der klassische Anwendungsfall ist die Danksagung an das Übersetzungs-Team und die Information, wie übersetzungsspezifische Fehler berichtet werden sollen.
Mit Po4a müssen Sie addendum-Dateien angeben, die konzeptionell als Patches angesehen werden können, die auf das lokalisierte Dokument nach der Verarbeitung angewandt werden. Jedes Addendum muss als separate Datei bereitgestellt werden, wobei das Format sich allerdings deutlich von klassischen Patches unterscheidet. Die erste Zeile ist eine Kopfzeile, die den Einschubpunkt des Addendums definiert (mit einer unglücklicherweise kryptischen Syntax -- siehe unten), während der Rest der Datei unverändert an der festgelegten Position eingefügt wird.
Die Kopfzeile muss mit der Zeichenkette PO4A-HEADER: beginnen, gefolgt von einer durch Semikola getrennten Liste von Schlüssel=Wert-Paaren.
Beispielsweise erklärt die folgende Kopfzeile, dass ein Addendum ganz am Ende der Übersetzung abgelegt werden muss.
PO4A-HEADER: mode=eof
Die Dinge werden komplexer, wenn Sie den zusätzlichen Inhalt in der Mitte des Dokuments hinzufügen wollen. Die folgende Kopfzeile erklärt, dass nach dem XML-Abschnitt, der die Zeichenkette Über dieses Dokument in der Übersetzung enthält, ein Addendum abgelegt werden muss.
PO4A-HEADER: position=Über dieses Dokument; mode=after; endboundary=</section>
In der Praxis wird Po4a beim Versuch, ein Addendum anzuwenden, nach der ersten Zeile, die auf das Argument "Position" passt, suchen ("Position" kann ein regulärer Ausdruck sein). Vergessen Sie nicht, dass Po4a hier das übersetzte Dokument betrachtet. Das Ursprungsdokument ist auf Englisch, aber Ihre Zeile sollte wahrscheinlich wie folgt aussehen, falls Sie möchten, dass sie auf die französische Übersetzung des Dokuments angewandt wird.
PO4A-HEADER: position=À propos de ce document; mode=after; endboundary=</section>
Sobald die "Position" im Zieldokument gefunden wurde, sucht Po4a für die nächste Zeile nach der "Position", die auf das bereitgestellte "endboundary" passt. Das Addendum wird direkt nach dieser Zeile eingefügt (da wir eine endboundary bereitstellten, d.h. eine Begrenzung, die den aktuellen Abschnitt beendet).
Der genau gleiche Effekt könnte mit den nachfolgenden Kopfzeilen erreicht werden, die äquivalent sind:
PO4A-HEADER: position=Über dieses Dokument; mode=after; beginboundary=<section>
Hier sucht Po4a in der Übersetzung nach der ersten Zeile, die auf "<section"> passt und nach der auf "Über dieses Dokument" passenden Zeile liegt, und fügt das Addendum vor dieser Zeile ein, da wir ein beginboundary bereitgestellt haben, d.h. eine Begrenzungsmarkierung, die den Anfang des nächsten Abschnitts markiert. Daher verlangt diese Kopfzeile, dass das Addendum nach dem Abschnitt, der "Über dieses Dokument" enthält, gesetzt wird, und weist Po4a an, dass dieser Abschnitt mit einer Zeile, die die Markierung "<section"> enthält, beginnt. Dies ist zum vorherigen Beispiel äquivalent, da Sie in Wirklichkeit möchten, dass dieses Addendum entweder nach "/section"> oder vor "<section"> hinzugefügt wird.
Sie können den Einfüge-Modus auch auf den Wert "before" setzen, mit einer ähnlichen Semantik: Kombinierung von "mode=before" mit einem "endboundary" wird dass Addendum genau nach der passenden Begrenzung setzen. Dies ist die letzte mögliche Begrenzungszeile vor der "Position". Kombinierung von "mode=before" mit einer "beginboundary" setzt das Addendum genau vor die passende Begrenzung. Dies ist die letzte mögliche Begrenzung vor der "Position".
Modus | Begrenzungsart | Verwandte Begrenzung | Einfügepunkt im Vergleich zur Begrenzung ========|================|=======================|========================================= 'before'| 'endboundary' | letzte vor 'Position' | direkt nach der ausgewählten Begrenzung 'before'|'beginboundary' | letzte vor 'Position' | direkt vor der ausgewählten Begrenzung 'after' | 'endboundary' | erste nach 'Position' | direkt nach der ausgewählten Begrenzung 'after' |'beginboundary' | erste nach 'Position' | direkt vor der ausgewählten Begrenzung 'eof' | (keine) | n.Z. | Dateiende
Tipps und Tricks rund um Addenda
PO4A-HEADER: position=Über dieses Dokument; mode=after; beginboundary=<section> PO4A-HEADER: position=Über dieses Dokument ; mode=after; beginboundary=<section>
Addenda-Beispiele
.SH "AUTOREN"
Sie sollten den zweischrittigen Zugang durch Setzen von mode=after wählen. Dann sollten Sie mit dem regulären Argumentenausdruck Position die Suche auf die Zeile nach AUTOREN eingrenzen. Dann sollten Sie eine Übereinstimmung mit dem Anfang des nächsten Abschnittes (d.h. ^\.SH) mit dem regulären Argumentenausdruck beginboundary erzielen. Mit anderen Worten:
PO4A-HEADER:mode=after;position=AUTOREN;beginboundary=\.SH
PO4A-HEADER:mode=after;position=Copyright Großer Kerl, 2004;beginboundary=^
PO4A-HEADER:mode=after;position=Über dieses Dokument;beginboundary=FakePo4aBoundary
Ein ausführlicheres Beispiel
Originaldokument (POD-formatiert):
|=head1 BESCHREIBUNG | |dummy - Ein Platzhalterprogramm | |=head1 AUTOR | |ich
Dann wird das folgende Addendum sicherstellen, dass ein Abschnitt (auf Französisch) über den Übersetzer an das Ende der Datei hinzugefügt wird (auf Französisch heißt »ÜBERSETZER« »TRADUCTEUR« und »moi« heißt »ich«).
|PO4A-HEADER:mode=after;position=AUTEUR;beginboundary=^=head | |=head1 TRADUCTEUR | |moi |
Um Ihr Addendum vor dem AUTOR einzufügen, verwenden Sie die folgende Kopfzeile:
PO4A-HEADER:mode=after;position=NOM;beginboundary=^=head1
Dies funktioniert, da die nächste auf das beginboundary /^=head1/ passende Zeile nach dem Abschnitt »BESCHREIBUNG« (übersetzt zu »NOM« auf Französisch) diejenige ist, die die Autoren deklariert. Daher wird das Addendum zwischen beide Abschnitte gelegt. Beachten Sie: Falls später ein anderer Abschnitt zwischen den Abschnitten NAME und AUTHOR hinzugefügt wird, wird Po4a das Addendum fehlerhafterweise vor den neuen Abschnitt legen.
Um dies zu vermeiden, können Sie das gleiche mittels mode=before erreichen:
PO4A-HEADER:mode=before;position=^=head1 AUTEUR
Dieses Kapitel gibt Ihnen einen kurzen Überblick über die Interna von Po4a, so dass Sie sich sicherer fühlen, es zu warten und zu verbessern. Es könnte Ihnen auch dabei helfen, zu verstehen, warum es nicht das tut, was Sie erwarten, und wie Sie Ihre Probleme beheben können.
Die Po4a-Architektur ist objektorientiert. Die Klasse Locale::Po4a::TransTractor(3pm) ist der gemeinsame Vorfahr von allen Auswertungsklassen. Dieser merkwürdige Name ist der Tatsache zu verdanken, dass er gleichzeitig für das Übersetzen des Dokuments und das Extrahieren von Zeichenketten zuständig ist.
Förmlicher ausgedrückt nimmt es ein Dokument zum Übersetzen plus eine PO-Datei, die die Übersetzungen enthält, als Eingabe, während es zwei getrennte Ausgaben erzeugt: Eine weitere PO-Datei (die das Ergebnis des Extrahierens übersetzbarer Zeichenketten vom Eingabedokument ist) und einem übersetzen Dokument (mit der gleichen Struktur, wie der aus der Eingabe, bei der aber alle übersetzbaren Zeichenketten durch den Inhalt der Eingabe-PO-Datei ersetzt wurden). Hier eine grafische Darstellung davon:
Eingabedokument -- \ /---> Ausgabedokument \ TransTractor:: / (übersetzt) +-->-- parse() --------+ / \ Eingabe-PO-Datei---/ \---> Ausgabe-PO-Datei (extrahiert)
Dieser kleine Knochen ist der Kern der Po4a-Architektur. Falls Sie die Eingabe-PO-Datei und das Ausgabedokument weglassen, erhalten Sie po4a-gettextize. Falls Sie beide Eingaben bereitstellen und die Ausgabe-PO-Datei nicht beachten, erhalten Sie po4a-translate. po4a ruft TransTractor zweimal auf und ruft msgmerge -U zwischen diesen TransTractor-Aufrufen auf, um Lösungen aus einer Hand mit einer einzelnen Konfigurationsdatei bereitzustellen. Bitte lesen Sie Locale::Po4a::TransTractor(3pm) für weitere Details.
Es folgt eine unvollständige Liste von Projekten, die Po4a für ihre Dokumentation im Einsatz haben. Falls Sie Ihre Projekt in diese Liste aufgenommen haben möchten, schicken Sie uns auf Englisch eine E-Mail (oder einen »Merge Request«).
Dieses Projekt stellt die Infrastruktur zur Übersetzung vieler Handbuchseiten in verschiedene Sprachen bereit, mit Integration in viele große Distributionen (Arch Linux, Debian und abgeleitete, Fedora).
Ich persönlich spreche es als pouah <https://en.wiktionary.org/wiki/pouah> aus, was auf Französich lautmalerisch anstelle von »Bäh« verwandt wird :) Vielleicht habe ich einen merkwürdigen Humor :)
Es gibt eine Reihe davon. Hier ist eine unvollständige Liste und weitere Werkzeuge erscheinen am Horizont.
Es kann nur XML und eine spezielle DTD handhaben. Der Verfasser ist ziemlich unglücklich mit der Handhabung von Listen, die in einer großen Msgid enden. Wenn die Liste groß wird, wird es schwerer, mit dem großen Stück umzugehen.
Die Hauptvorteile von Po4a demgegenüber sind die Erleichterung beim Hinzufügen zusätzlichen Inhalts (was dort sogar schlechter ist) und die Fähigkeit, Gettext zu verwenden.
- https://docs.kde.org/stable5/en/kdesdk/lokalize/project-view.html - http://www.debian.org/intl/l10n/
Aber nicht alles ist rosig und diese Herangehensweise hat auch einige Nachteile, die bewältigt werden müssen.
Es wäre traumhaft, wenn jemand Po4a in Gtranslator oder Lokalize einbinden würde. Wenn eine Dokumentationsdatei geöffnet wird, werden die Zeichenketten automatisch extrahiert. Wenn sie gespeichert wird, kann eine übersetzte Datei + PO-Datei auf die Platte geschrieben werden. Falls es fertiggebracht wird, ein MS-Word-Modul™ (oder zumindest RTF) zu erstellen, können es sogar professionelle Übersetzer nutzen.
Denis Barbier <barbier,linuxfr.org> Martin Quinson (mquinson#debian.org)
2023-01-03 | Po4a-Werkzeuge |