[[Vorlage(Getestet, general)]] ##[[Fortgeschritten]] {{{#!vorlage Wissen [:Editor: Einen Editor öffnen] [:Rechte: Rechte für Dateien und Ordner ändern] [:Terminal: Ein Terminal öffnen] }}} [[Inhaltsverzeichnis(1)]] 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. {{{#!code bash #!/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]: {{{#!vorlage Befehl 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]: {{{#!vorlage Befehl 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: {{{#!code bash # German translations for helloworld package. # Copyright (C) 2008 Max Mustermann # This file is distributed under the same license as the helloworld package. # Max Mustermann , 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 \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]: {{{#!vorlage Befehl 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]: {{{#!vorlage Befehl LC_ALL=de_DE helloworld }}} {{{Hallo Welt! Dieser Text ist deutsch! }}} {{{#!vorlage Befehl LC_ALL=C helloworld }}} {{{Hello World! This text is english! }}} = Links = * [http://www.linux-user.de/ausgabe/2004/02/076-i18n/index.html Linux User: Bash-Skripte in mehrere Sprachen übersetzen] {de} # tag: Programmierung, Shell