Zum Inhalt springen

GNU gettext

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 9. Mai 2006 um 14:53 Uhr durch Fleasoft (Diskussion | Beiträge) (kat. Übersetzung erg.). Sie kann sich erheblich von der aktuellen Version unterscheiden.
GNU gettext

Basisdaten

Maintainer Daiki Ueno[1], Ulrich Drepper, Bruno Haible
Entwickler Das GNU gettext Team (Maintainer: Bruno Haible)
Erscheinungsjahr 1990[2]
Aktuelle Version 0.14.5 (stable)
(17. Oktober 2005)
Betriebssystem unixartige Betriebssysteme, Windows (s. Weblinks)
Programmier­sprache C
Kategorie Lokalisierung
Lizenz GPL
deutschsprachig nein
GNU gettext Homepage

GNU gettext ist die GNU-Internationalisierungsbibliothek. Normalerweise wird sie zur Entwicklung von mehrsprachigen Programmen genutzt. Die derzeit aktuelle Version ist 0.14.5.

Arbeitsablauf

Programmierer

Zuerst wird der Quelltext so modifiziert, dass er die GNU-gettext-Funktionen aufruft. Dies wird bei den meisten Programmiersprachen durch wrappen der Strings erreicht, die durch gettext ausgegeben werden sollen. Um Zeit beim Programmieren zu sparen, ist diese Funktion normalerweise mit einem vorangestellten _ verknüpft, so dass das folgende Codebeispiel (in C) von

printf("Mein Name ist %s.\n", mein_name);

in

printf(_("Mein Name ist %s.\n"), mein_name);

geändert werden müsste.

GNU gettext ist außer in C mittlerweile auch in C++, Objective C, sh script, Bash script, Python, GNU CLISP, Emacs Lisp, librep, GNU Smalltalk, Java, GNU awk, Pascal, wxWidgets (mit Hilfe der wxLocale Klasse), YCP (der YaST2 Sprache), Tcl, Perl, PHP und Pike verfügbar. Die Benutzung von gettext ist in der Regel sehr ähnlich zu C.

Mit xgettext werden die Quelldateien analysiert, um eine .pot-Datei (Portable Object Template) zu erzeugen, die eine Liste aller übersetzbarer Texte (Strings) enthält. Für das obige Beispiel würde der Eintrag in der .pot-Datei in etwa so aussehen:

#: src/name.c:36
msgid "Mein Name ist %s.\n"
msgstr ""

Übersetzer

Der Übersetzer erstellt eine .po-Datei (Portable Object) aus der Vorlage mit dem Programm msginit und erstellt anschließend die Übersetzungen. msginit initialisert die Übersetzung, wenn man also eine englische Übersetzung erstellen möchte, müsste man msginit wie folgt aufrufen:

msginit --locale=en --input=name.pot

Dieser Aufruf würde die Datei en.po erstellen, ein Eintrag in dieser Datei würde z.B. so aussehen:

#: src/name.c:36
msgid "Mein Name ist %s.\n"
msgstr "Mein Name ist %s.\n"

Der Übersetzer müsste dann entweder manuell oder mit einem Werkzeug wie poEdit die entsprechenden Texte ersetzen. Nach getaner Arbeit würde der Beispieleintrag so aussehen:

#: src/name.c:36
msgid "Mein Name ist %s.\n"
msgstr "My name is %s.\n"

Abschließend werden die .po-Dateien mit msgfmt in binäre .mo-Dateien (Machine Object) übersetzt. Diese können nun mit dem Softwarepaket ausgeliefert werden.

Benutzer

Der Benutzer auf einem Unix- (oder unixähnlichen) System definiert die Umgebungsvariable LANGUAGE. Das Programm gibt die Texte in der entsprechenden Sprache aus, sofern für diese eine .mo-Datei existiert.

  1. In: Free Software Directory.
  2. web.archive.org. (abgerufen am 1. Dezember 2024).