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.
The --keywords option can also be useful - see the xgettext(1) documentation.
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
-
Must exist, even if empty. Consists of a list of translations - each line
not starting with a '#' must match an existing PO file. E.g. if LINGUAS
contains a single line, 'fr', an fr.po file must exist alongside the
LINGUAS file.
$ 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.