po4a: Mehrsprachigkeit für (fast) alles in 4 Schritten

1504347689 (2. September 2017)

Basierend auf dem Artikel “Bewerbungen und Lebensläufe mit LaTeX und Moderncv gestalten” habe ich vor ein paar Jahren begonnen, meine Bewerbungsunterlagen zu pflegen und den Prozess der Erstellung von Bewerbungen zu vereinfachen und zu automatisieren. Kürzlich kam der Wunsch auf, auch Bewerbungen außerhalb Deutschlands zu vollziehen, womit die englische Sprache eine Notwendigkeit wurde. Ich suchte länger nach bequemen Möglichkeiten, die Bewerbung so zu übersetzen, dass ich jederzeit Updates vornehmen kann, ohne das eigentliche Gefüge des Dokuments jedes mal zu überarbeiten.

Eine gute Möglichkeit der wartbaren Übersetzung meiner Bewerbungsunterlagen bot mir po4a (“PO for anything” oder auch “Portable Object for anything”). Eine Beschreibung von po4a findet sich auf der Projektseite und lautet:

Das Projektziel von Po4a (PO für alles) ist es, die Übersetzung (und interessanter, die Wartung der Übersetzung) zu vereinfachen, indem die Gettext-Werkzeuge auch für Gebiete verwendet werden, wo diese nicht erwartet werden, wie Dokumentation.

Im Beispiel gehen wir von einer einzelnen Latex “.tex”-Datei aus, welche in unserem Fall “lebenslauf-anschreiben-1.0-de.tex” heißt. Der Zusatz “de” im Dateinamen definiert die Sprache, in welcher die Mehrheit des finalen Dokuments verfasst sein wird. Diese oder eine vergleichbare Ordnung ist nicht notwendig aber sinnvoll, mit einer steigenden Zahl an Sprachen würde sonst der Grad an Unordnung steigen.

Schritt 1 – Anlegen einer po4a.cfg

Um das Ausgangsdokument nun als ein solches zu analysieren und um die Einstellungen für unsere Übersetzung zu treffen, müssen wir eine Konfiguration anlegen. Diese heißt in meinem Fall po4a.cfg, kann aber einen beliebigen Namen tragen. Der Inhalt lautet in meinem Fall so:

[po_directory] ./

[type: latex] ./lebenslauf-anschreiben-1.0-de.tex $lang:./$lang.tex \
 add_$lang:?./$lang.add opt:"-k 0 -M utf8"

Wir definieren hier:

  • mittels “po_directory” das Verzeichnis, in dem sich die portablen Objekte (.po) und deren Templates (.pot) befinden
  • mittels “type: latex” von welchem Typ das Dokument ist, welches wir übersetzen möchten
  • das Ausgangsdokument
  • das Zieldokument
  • optional: ein Addendum, also Teile, die nur der übersetzten Version angehängt werden sollen (in unserem Fall existiert keine .add-Datei, daher wird auch keine angehängt werden)
  • zusätzliche Optionen
    • mittels “-k 0”, dass schon bei 0% der Übersetzung auch die entsprechenden Dateien generiert werden sollen (Standard wäre 80)
    • mittels “-M utf8”, dass unsere Ausgangsdokumente mit dem utf8-Zeichensatz interpretiert werden sollen um Problemen mit Umlauten und Sonderzeichen zu begegnen

Die vollständige Referenz zur Konfiguration befindet sich auf der Projektseite unter “Dokumentation“.

Schritt 2 – po4a-gettextize

Hierbei erstellen wir die .pot-Datei, welche wir anschließend mit poedit oder einer vergleichbaren Übersetzungs-Anwendung öffnen werden.

po4a-gettextize -f latex -m lebenslauf-anschreiben-1.0-de.tex -M utf8 -p lebenslauf-anschreiben-1.0-en.pot

Es ist zu beachten, dass dies eine einmalige Aktion ist. Haben wir die einmal mit der Übersetzung begonnen, wird für Aktualisierungen nur noch ein einziges Kommando benötigt.

Schritt 3 – Übersetzung

Nun findet die Übersetzung statt. Ich nutze hierfür poedit:

poedit lebenslauf-anschreiben-1.0-en.pot

In poedit wird dann eine neue Übersetzung angelegt und als lebenslauf-anschreiben-1.0-en.po gespeichert. Automatisch wird eine lebenslauf-anschreiben-1.0-en.mo angelegt werden.

Schritt 4 – Generierung des übersetzten Zieldokuments

po4a po4a.cfg

Um zukünftig Aktualisierungen durchzuführen genügt es, das Ausgangsdokument anzupassen und das Kommando aus Schritt 4 erneut auszuführen.

Weitere Informationen

Die Aktualisierung der .po-Datei sowie die Generierung des Zieldokuments kann ohne auch ohne po4a.cfg mittels po4a-translate und po4a-updatepo manuell passieren:

po4a-translate -M utf8 -k 0 -f latex -m lebenslauf-anschreiben-1.0-de.tex -p lebenslauf-anschreiben-1.0-en.po -l lebenslauf-anschreiben-1.0-en.tex
po4a-updatepo -M utf8 -f latex -m lebenslauf-anschreiben-1.0-de.tex -p lebenslauf-anschreiben-1.0-en.po

Unsere Latex “.tex”-Datei in englischer Sprache ist generiert und kann nun mit Latex in ein PDF-Dokument umgewandelt werden.

Bilder und Grafiken, welche in diesem Artikel genutzt wurden

“Poedit-Icon” heruntergeladen von GitHub lizensiert unter der MIT Lizenz gemäß des COPYING-Dokuments, welches dem Software-Repository beiliegt.

Tags: , , , ,

Leave a Reply

Your email address will not be published.