Lokalisierung mit GNU gettext

Mit Lokalisierung ist in der Softwareentwicklung die Anpassung an die sprachlichen und kulturellen Gegebenheiten gemeint. Neben der Übersetzung der Texte in die Zielsprache müssen auch die Darstellung des Datums, das Währungsformat, die Maßeinheiten usw. angepasst werden.

Für viele Lösungen, die im Web eingesetzt werden, wird beispielsweise gettext verwendet. gettext ist für eine Vielzahl von Programmiersprachen (C, C++, Python, Perl, PHP und viele mehr) verfügbar. Die Benutzung von gettext ist trotz der Unterschiede zwischen den Programmiersprachen  in der Regel sehr ähnlich.

Ein „Hello World!“-Beispiel mit gettext in einer PHP-Datei namens test.php sieht in etwa so aus:

<?php echo _('Hello World!'); ?>

Mit dem Kommando xgettext test.php -o test.pot kann eine Katalog-Datei erstellt werden, die eine Liste mit den übersetzbaren Texten enthält. Nach der Eingabe von msginit –locale=it_IT –input=test.pot wird eine Datei namens it.po erstellt. Neben dem einleitenden Teil enthält diese Datei einen Abschnitt, der vor dem Bearbeiten etwa so aussieht:

#: test.php:1
msgid "Hello World!"
msgstr ""

In den Bereich zwischen den Anführungszeichen nach msgstr kann dann jeweils die Übersetzung eingetragen werden. Nach dem Bearbeiten wird diese Datei einfach in ein maschinell lesbares Format übertragen.

Das Kommando msgfmt it.po -v -o test.mo übernimmt diese Aufgabe. Bei der täglichen Arbeit eines Übersetzers werden diese Schritte in der Regel von anderen Beteiligten ausgeführt. Allerdings kann das Wissen um diese Vorgänge sicher nicht schaden.

Für die Arbeit mit den .po-Dateien gibt es aber auch entsprechende Programme. Hier soll vor allem poEdit (erhältlich für Windows und für Linux) erwähnt werden, das auch in der Lage ist eine Translation-Memory aufzubauen und zu nutzen.