NAME¶
po4a-runtime - Po4a und Laufzeit-Gettext-Übersetzung ohne Autotools
Einleitung¶
Mit
po4a-build enthält
po4a auch Unterstützung
für das Hinzufügen von Übersetzungen mittels Gettext in
die Ausgabemeldungen von Laufzeitskripten, aber ohne vorauszusetzen, dass das
Paket die Autotools und den typischen
./configure-Prozess verwendet.
Durch Einsatz der beispielhaften
Makefile-Schnipsel können Pakete
sich
intltool mit minimalem Aufwand nutzbar machen.
Layout¶
Übersetzungen von Dokumentationen sollten NICHT das gleiche
po/-Verzeichnis wie die Übersetzungen der Programmmeldungen
benutzen. Es ist zwar möglich, dass die Übersetzungen der
Programmmeldungen ein von
po/ verschiedenes Verzeichnis benutzen,
allerdings ist es meistens am besten, der Konvention zu folgen.
Mehrere Sprachen¶
Noch ein Wort zu Paketen, die Skripte in verschiedenen Programmiersprachen
benutzen. Eine häufige Mischung ist Perl und Shell. Übrings WIRD
Gettext durcheinander kommen und Zeichenketten aus der einen oder anderen
Sprache weglassen, solange nicht Dateiendungen für diejenige Sprache
benutzt werden, die am wenigsten problematisch ist.
Wenn mehrere Sprachen verwandt werden, experimentieren Sie mit verschiedenen
Einstellungen in
po/Makevars, bis Sie alle Zeichenketten erhalten, die
Sie in der POT-Datei haben wollen.
Insbesondere kann die Angabe von zwei Sprachen in
po/Makevars
problematisch sein. Stattdessen:
# Tun Sie dies nicht:
XGETTEXT_OPTIONS = -L Perl -L Shell --from-code=iso-8859-1
Ziehen Sie in Betracht, alle Dateien für eine der beteiligten Sprachen
umzubenennen (oder symbolische Verweise dafür bereitzustellen) und die
expliziten -L-Optionen wegzulassen. Die Dateierweiterung muss nur
während der Verarbeitung von
po/POTFILES.in existieren.
Außerdem kann die Option --keywords nützlich sein – siehe
die Xgettext-Dokumentation.
po/ befüllen¶
Erstellen Sie die oberste Ebene Ihres
po/-Verzeichnisses und benutzen Sie
die Beispieldateien in
/usr/share/doc/po4a/examples/, um es zu
befüllen.
- LINGUAS
- muss existieren, sogar, wenn sie leer ist; besteht aus einer Liste von
Übersetzungen – jede Zeile, die nicht mit einem
»#« beginnt, muss auf eine existierende PO-Datei passen.
D.h., falls LINGUAS eine einzelne Zeile, »fr«,
enthält, muss eine Datei fr.po zusammen mit der
LINGUAS-Datei existieren.
$ cat po/LINGUAS
cs
de
fr
$
Gemäß der Konvention ist die LINGUAS-Datei alphabetisch
sortiert, dies ist aber ein manueller Prozess.
- POTFILES.in
- die Liste der Dateien, die die Nachrichten enthalten, die zur Laufzeit
übersetzt werden müssen – d.h. Ihre Skripte. Falls
Sie die oberste Ebene des po/-Verzeichnisses benutzt haben, sollten
die Pfade relativ zur obersten Verzeichnisebene sein, nicht das
po/-Verzeichnis selbst.
$ ls -l
myscript.pl
another.pl
foo/support.pl
po/
po/POTFILES.in
$ cat po/POTFILES.in
myscript.pl
another.pl
foo/support.pl
$
Beachten Sie, dass es explizit unterstützt wird, dass Skripte selbst
Zeichenketten sowohl für die Laufzeit- als auch für die
Dokumentationsübersetzung enthalten können, z.B. werden
Gettext-Funktionen für die Laufzeit und eingebetteten POD-Inhalt
für Dokumentation benutzt. Daher ist es kein Problem, wenn dieselbe
Datei in po/POTFILES.in und doc/po4a-build.conf
aufgeführt ist.
- Makevars-perl.example
- Falls Ihre Skripte in Perl verfasst sind, kopieren Sie diese Beispieldatei
nach po/Makevars und bearbeiten Sie sie geeignet.
- Makevars-shell.example
- Falls Ihr Skripte Shell-Skripte sind, kopieren Sie diese Beispieldatei
nach po/Makevars und bearbeiten Sie sie geeignet.
- po4a-build.make
- Kopieren Sie dieses Beispiel als po/Makefile – es sollte
keine Bearbeitung erfordern. Falls Sie es aber gegenüber
/usr/share/doc/po4a/examples/po4a-build.make aktuell halten
möchten, da es nötig sein könnte, es innerhalb von
Po4a-Veröffentlichungen zu aktualisieren, weil sich die
darunterliegende Intltools-Unterstützung ändert. (Die Datei
selbst wurde von einem anderen Projekt erzeugt, die Autotools und Intltool
benutzt.)
Bauen¶
Diese Schnipsel müssen Ihrem Makefile auf der obersten Ebene
hinzugefügt werden oder was auch immer Sie für eine Methode
benutzen, um Ihre Quellen zur Verteilung vorzubereiten.
clean:
$(MAKE) -C po/ clean
install:
$(MAKE) -C po/ install DESTDIR=$(DESTDIR)
dist:
$(MAKE) -C po/ pot
(In einem Autotools-Projekt würde dies automatisch geschehen, indem
einfach dem "SUBDIRS"-Wert in
Makefile.am po
hinzugefügt wird.)
Wartung¶
Übersetzung zur Laufzeit ist nicht ganz so einfach wie
po4a-build,
worin das Hinzufügen einer neuen Übersetzung die Bearbeitung von
po/LINGUAS erfordert, aber unabhängig davon ist das
Aktualisieren von Übersetzungen lediglich ein Fall, bei dem die
maßgebliche PO-Datei durch die neue Version ersetzt wird.
Abhängig davon, wie Sie den Quell-Tarball vorbereiten, könnte es
außerdem erforderlich sein, die neuen PO-Dateien in der Datei
MANIFEST aufzuführen oder Skripten hinzuzufügen, die den
Tarball vorbereiten. (Das gilt ebenso für
po4a-build.)
Jegliche
*.mo- oder
*.gmo-Dateien in
po/ können
gelöscht/aufgeräumt werden.
Copyright¶
Solange die Beispieldateien Teil des Po4a-Projekts sind, können Sie sie
in Ihrem eigenen Projekt frei verwenden, ändern oder verteilen, ohne
dass Sie zurück auf Po4a verweisen müssen oder das Po4a-Team in
Ihrem eigenen Copyright-Hinweis aufführen zu müssen, ebenso wie
bei den anderen Werkzeugen zum automatischen Bauen, wie Automake selbst. Falls
Sie Po4a erwähnen wollen, ist das auch gut.
AUTOREN¶
Neil Williams <linux@codehelp.co.uk>