Bash Lokalisierung
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Bash-Skripte können mittels xgettext lokalisiert werden. Als Standard-Sprache sollte man Englisch verwenden.
Beispiel-Skript¶
Folgendes Beispiel-Skript namens helloworld wird so mit einem Editor erstellt [1], dass mit xgettext Übersetzungsdateien angelegt werden können. Dazu sind die Variablen TEXTDOMAIN
und TEXTDOMAINDIR
anzugeben, die Namen und Speicherpfad der Übersetzungsdateien enthalten. Die zu übersetzenden Texte sind durch das vorangestellte Dollarzeichen gekennzeichnet.
1 2 3 4 5 6 7 | #!/bin/bash TEXTDOMAIN=helloworld TEXTDOMAINDIR=/usr/share/locale echo $"Hello World!" echo $"This text is english!" |
Das Skript wird beispielsweise als ~/bin/helloworld gespeichert und ausführbar gemacht [2].
Übersetzungs-Vorlage¶
Nun kann die Vorlage für Übersetzungen erstellt werden [3]:
bash --dump-po-strings ~/bin/helloworld | xgettext -L PO -o ~/helloworld.pot -
Lokalisierung¶
Um mit der deutschen Übersetzung zu beginnen, wird die entsprechende .po-Datei erstellt [3]:
msginit -l de -i ~/helloworld.pot -o ~/helloworld.po
Die Datei ~/helloworld.po kann in einem Übersetzungsprogramm oder in einem Texteditor bearbeitet werden. Das Resultat sollte wie folgt aussehen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | # German translations for helloworld package. # Copyright (C) 2008 Max Mustermann # This file is distributed under the same license as the helloworld package. # Max Mustermann <maxmustermann@mustermail.xy>, 2008. # msgid "" msgstr "" "Project-Id-Version: helloworld 0.0.1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-06-20 14:55+0200\n" "PO-Revision-Date: 2008-06-20 14:55+0200\n" "Last-Translator: Max Mustermann <maxmustermann@mustermail.xy>\n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: helloworld:6 msgid "Hello World!" msgstr "Hallo Welt!" #: helloworld:7 msgid "This text is english!" msgstr "Dieser Text ist deutsch!" |
Kompilieren und Installieren¶
Die Übersetzung muss in ein Binärformat umgewandelt werden, anschließend kann die fertige Übersetzung an die richtige Stelle verschoben werden [3]:
msgfmt -o ~/helloworld.mo ~/helloworld.po sudo mv ~/helloworld.mo /usr/share/locale/de/LC_MESSAGES/
Überprüfen¶
Nun kann der Erfolg überprüft werden [3]:
LC_ALL=de_DE helloworld
Hallo Welt! Dieser Text ist deutsch!
LC_ALL=C helloworld
Hello World! This text is english!
Links¶