AA_123rf-11182694_CienpiesDesign-123RF.jpg

© Cienpies Design, 123RF

Mit Po4a ganz einfach Dokumentationen übersetzen

Kein Kauderwelsch

Mit Po4a haben Sie alle notwendigen Werkzeuge an der Hand, um Dokumentationen an eine Landessprache anzupassen.

Gnome und KDE machen es vor: Die Entwickler verfügen über die nötige Infrastruktur zum Lokalisieren und setzen sie intensiv ein. So gilt eine deutschsprachige Oberfläche hier als Selbstverständlichkeit.

In gewisser Weise steht einem Benutzer, der eine deutsche Programmoberfläche bekommt, auch ein deutsches Handbuch zu – obwohl dieser Anspruch manchmal ins Leere läuft. Es ist jedoch ein Ideal, dem sich die Open-Source-Community anzunähern versucht, zumindest durch die geeigneten technischen Voraussetzungen. Zu diesen zählt auch Po4a [1].

Man spricht deutsch?

Die Möglichkeit zum Lokalisieren von Dokumentationen steht für die in Groff-Makros oder im meist von BSD verwendeten Mdoc-Format geschriebenen Unix-Handbuchseiten ebenfalls offen. In der Praxis sieht es allerdings etwas trübe aus: Die meisten übersetzten Versionen stammen von externen Projekten wie Manpages-de [2]. Abbildung 1 zeigt die deutsche Handbuchseite zum Befehl chown aus den GNU Coreutils – die deutsche Variante kommt aus dem Projekt Manpages-de.

Abbildung 1: Es geht doch: der KDE-Hilfebrowser mit einer deutschen Manpage.

Die Aufgabe, Software in andere Sprachen zu übersetzen, schieben viele Entwickler ans Ende ihrer Prioritätenliste – selbst solche, deren eigene Muttersprache nicht Englisch ist. Obwohl die Po4a-Skripte zahlreiche Formate verarbeiten und sich recht leicht handhaben lassen, kommen sie erst spärlich zum Einsatz.

Das liegt unter Umständen daran, dass die Dokumentation zu Po4a selbst ebenso unübersichtlich wie verwirrend ausfällt: Die Entwickler beschreiben zwar das Einbinden in ein Build-System, beschränken sich dabei aber sehr einseitig auf die GNU Autotools. Weiterhin irritieren Verweise auf Methoden, die heute kaum zum Einsatz kommen, wie das Verarbeiten von PO-Dateien in anderen Formaten als Unicode.

Dabei kommt Po4a mit wenigen Shell-Befehlen aus, die Ihnen innerhalb eines passenden Skripts alles abnehmen, was für das Verarbeiten der Dateien und das Übertragen in die verschiedenen Sprachen nötig ist.

Angenommen, ein Projekt namens linuxuser liefert eine Datei linuxuser.1 und zusätzlich eine API-Dokumentation in linuxuser.3 sowie eine Beschreibung der Konfigurationsoptionen namens linuxuser.conf.5 aus. Alle drei befinden sich im Unterverzeichnis man. Listing 1 zeigt nun ein Skript, das aus diesen Dateien eine gemeinsame Übersetzungsvorlage mit der Endung .pot erstellt, aus der später die PO-Dateien entstehen.

Listing 1

#!/bin/sh
po4a-updatepo -f man \
-m man/linuxuser.1 \
-m man/linuxuser.3 \
-m man/linuxuser.conf.5 \
-p linuxuser-man.pot

Der Schalter -f man bestimmt das Format, in dem die zu übersetzenden Dateien vorliegen – ob Groff oder Mdoc spielt hier keine Rolle. Ob einfacher Text, Texinfo, LaTeX, POD, XML – (fast) alles ist möglich. Manche Formate harren noch der Implementation wie das immer beliebtere ReStructuredText [3]. Hier weichen Sie notfalls mit der Option -f text -o markdown auf das recht ähnliche Markdown aus.

Die Pot-Datei gilt es nun, irgendwo zu veröffentlichen. Dazu eignen sich besonders unabhängige Pools wie Transifex [4], Zanata [5] oder das GNU-Urgestein Translationproject.org [6]. Launchpad gilt hier dagegen als zweite Wahl: Ein Projekt, das sich nur dem Übersetzen widmet, sieht man dort nicht gern. Falls also Ihr Projekt nicht ohnehin schon dort angesiedelt ist, sparen Sie sich den steinigen Weg am besten.

In der Regel stellen Seiten wie Transifex nur die Forderung, dass Sie eine Pot-Datei bereitstellen. Um das Übertragen in tatsächliche PO-Dateien und deren späteres Aktualisieren anhand neuer Vorlagen kümmert sich die dortige Infrastruktur. Dank Schnittstelle zur Kommandozeile besteht darüber hinaus eine komfortable Anbindung an die Shell. Der Vorteil: Sie brauchen die einzelnen Dateien nicht selbst in einem Quellcode-Managementsystem vorrätig zu halten, sondern ziehen sie einfach bei Bedarf per Rsync vom Server – in der Regel erst beim Erstellen eines Tar-Archivs.

Auf ganzer Linie

Liegen die ersten PO-Dateien vor, dann gleichen Sie für das GNU Translation Project mit dem Befehl aus Listing 2 die Dateien des Servers mit dem lokalen System ab. Das setzt jedoch voraus, dass Sie vorher das Verzeichnis man-po angelegt haben. Listing 3 zeigt ein Skript, das nun die nativen Varianten der Dokumentation erzeugt.

Listing 2

$ rsync -Lrtvz  translationproject.org::tp/latest/linuxuser/  man-po

Listing 3

#!/bin/sh
cd man-po
for lang in *.po
  do
  if [ -d ${lang%.*} ] ; then
  echo "${lang%.*}: directory exists, will be reused"
  else
    mkdir ${lang%.*}
  fi
    po4a-translate -f man -m ../man/linuxuser.1 -p ${lang} -l ${lang%.*}/linuxuser.1
    po4a-translate -f man -m ../man/linuxuser.3 -p ${lang} -l ${lang%.*}/linuxuser.3
    po4a-translate -f man -m ../man/linuxuser.conf.5 -p ${lang} -l ${lang%.*}/linuxuser.conf.5
done

So weit, so gut. Nun liegt entsprechend des Ausgangsformats formatierter Code in den anhand der Sprachcodes benannten Unterverzeichnissen bereit. Jetzt müssen Sie nur noch beim Bau des Binärpakets oder dem Installieren des Programms die Dateien berücksichtigen. Da alles schon in der erforderlichen Verzeichnisstruktur vorliegt, liefern Sie das Skript direkt im Tarball mit und rufen es während der Installation auf.

Um beispielsweise die übersetzten Dateien mit Cmake zu erzeugen und ins System einzubinden, fügen Sie zunächst einen Abschnitt wie in Listing 4 zu Ihrer Datei CMakeLists.txt der obersten Ebene hinzu. Der Aufruf von cmake erzeugt dann wie gehabt ein gewöhnliches Makefile und verarbeitet die Manpages gleich mit.

Listing 4

add_custom_command(
  OUTPUT
  COMMAND ./create-po.sh
  DEPENDS linuxuser.1 linuxuser.3 linuxuser.conf.5
  )

Besonders elegant wäre es, das Skript in die Syntax des Systems umzuschreiben, was jedoch die Wiederverwendbarkeit des Codes einschränkt. Andere Build-Systeme bieten ähnliche Funktionen zum Einbinden externer Skripte, sodass die Funktionalität stets gewährleistet bleibt, wenn das Skript als solches bestehen bleibt.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 3 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Grafische Werkzeuge zum Lokalisieren im Vergleich
    Damit eine Software in der Landessprache erscheint, muss Sie jemand übersetzen. Leistungsfähige Tools machen es jedermann leicht, einen ganz persönlichen Beitrag zur Open-Source-Welt zu leisten.
  • News und Programme rund um GNOME
  • Der IRC-Client irssi
    Epic und BitchX waren lange Zeit die Standard-IRC-Clients für die Konsole. Der ebenfalls konsolenbasierte Client irssi setzt nun mit vielen Features dazu an, die beiden "Oldies" abzulösen.
  • Leserbriefe
  • Die KISS-Distro
    Salix OS ist eine auf Slackware basierende Linuxdistribution. Sie wurde im Sommer 2009 von ehemaligen Zenwalk-Entwicklern gegründet, die sich neu orientieren wollten. Salix OS möchte so nah wie möglich an der Mutterdistribution Slackware sein und folgt dem KISS-Prinzip ("Keep it simple and stupid").
Kommentare

Infos zur Publikation

LU 11/2017: Server für Daheim

Digitale Ausgabe: Preis € 8,50
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 3 Antworten
Hallo, bis jetzt hatte ich immer nur mit
IT-Kurse
Alice Trader, 26.09.2017 11:35, 2 Antworten
Hallo liebe Community, ich brauche Hilfe und bin sehr verzweifelt. Ih bin noch sehr neu in eure...
Backup mit KUP unter Suse 42.3
Horst Schwarz, 24.09.2017 13:16, 3 Antworten
Ich möchte auch wieder unter Suse 42.3 mit Kup meine Backup durchführen. Eine Installationsmöglic...
kein foto, etc. upload möglich, wo liegt mein fehler?
kerstin brums, 17.09.2017 22:08, 5 Antworten
moin, zum erstellen einer einfachen wordpress website kann ich keine fotos uploaden. vom rechne...
Arch Linux Netzwerkkonfigurationen
Franziska Schley, 15.09.2017 18:04, 0 Antworten
Moin liebe Linux community, ich habe momentan Probleme mit der Einstellung des Lan/Wlan in Arc...