GNU gettext

GNU gettext
GNU gettext
Entwickler Das GNU-gettext-Team (Maintainer: Bruno Haible)
Aktuelle Version 0.18.1.1
(6. Juni 2010)
Betriebssystem Unix-artige Betriebssysteme, Windows (s. Weblinks)
Kategorie Lokalisierung
Lizenz GPL: Anwendung und libgettextpo Bibliothek, LGPL: libintl und libasprintf Bibliothek
Deutschsprachig nein
GNU gettext Homepage

GNU gettext ist die GNU-Internationalisierungsbibliothek. Normalerweise wird sie zur Entwicklung von mehrsprachigen Programmen genutzt.

Inhaltsverzeichnis

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 auch unter dem Namen _ ansprechbar, 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. Dieses ist gleichbedeutend mit

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

GNU gettext ist außer in C mittlerweile auch in C++, Objective-C, sh script, Bash script, Python, Ruby, GNU CLISP, Emacs Lisp, librep, GNU Smalltalk, Java, GNU awk, Pascal, Delphi, Gambas, wxWidgets (mit Hilfe der wxLocale-Klasse), YCP (der YaST2-Sprache), Tcl, Perl, PHP und Pike verfügbar. Die Benutzung von gettext in diesen Systemen ist dabei 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 übersetzbaren 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 initialisiert 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 oder Lokalize (ehemals KBabel) 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.

Es empfiehlt sich häufig auch für deutsche Programmierer, die Originaltexte auf Englisch zu verfassen, ansonsten müsste ein Übersetzer sowohl Deutsch als auch die Zielsprache beherrschen. Eine alternative Strategie ist, statt ganzen Sätzen kurze Begriffe zu verwenden (z. B. „form_submit“), was zum einen den Vorteil hat, dass diese generischen „Schnipsel“ an mehreren Stellen im Code verwendet werden können, aber in der Lokalisierungsdatei nur einmal übersetzt werden müssen. Um denselben Effekt mit ganzen Sätzen zu erzielen, müssten diese Zeichen für Zeichen identisch sein, was recht fehleranfällig ist. Zum anderen lassen sich durch diese Wahrung des Kontexts sprachliche Mehrdeutigkeiten vermeiden, die vor allem bei kurzen Sätzen oder gar einzelnen Wörtern auftreten können. Möchte man beispielsweise das englische Wort „Order“ einerseits für die Sortierreihenfolge und andererseits als „Bestellen“ benutzen, hätte man bei einer eins-zu-eins Übersetzung Schwierigkeiten, wohingegen man bei der Verwendung kontextsensitiver Begriffe einmal ein „order_by" und einmal ein „submit_order“ benutzen könnte.

Benutzer

Der Benutzer auf einem Unix- (oder Unix-ähnlichen) System definiert die Locale mithilfe der Umgebungsvariablen LC_ALL, LC_MESSAGES bzw. LANG.

Unter Windows wird automatisch die Sprache verwendet, die unter Regional Options eingestellt ist.

Das Programm gibt die Texte in der entsprechenden Sprache aus, sofern für diese eine .mo-Datei existiert. Wenn keine passende .mo-Datei vorhanden ist, so benutzt das Programm die Sprache, in der es original geschrieben ist, in der Regel Englisch.

Siehe auch

Weblinks

Wikibooks Wikibooks: Computerbasierte Übersetzung – Lern- und Lehrmaterialien

Wikimedia Foundation.

Игры ⚽ Нужно сделать НИР?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • GNU gettext — gettext Développeur Projet GNU Dernière version 0.18.1 ( …   Wikipédia en Français

  • GNU gettext — Infobox Software name = gettext developer = The GNU Project latest release version = 0.17 latest release date = November 11, 2007 operating system = Cross Platform genre = Development, Translation license = LGPL (library), GPL (tools), GFDL/GPL… …   Wikipedia

  • GNU gettext — …   Википедия

  • gettext — Developer(s) Various Stable release 0.18 (GNU gettext) / May 9, 2010 (GNU gettext) Operating system Cross platform Type Internationalization and localization …   Wikipedia

  • Gettext — GNU gettext Entwickler: Das GNU gettext Team (Maintainer: Bruno Haible) Aktuelle Version: 0.17 (27. November 2006) Betriebssystem: Unix artige Betriebssysteme, Windows (s. Weblinks) …   Deutsch Wikipedia

  • gettext — GNU gettext Тип локализация программного обеспечения Автор Ульрих Дреппер Разработчики сообщество Написана на C Интерфейс командная строка Операционная система Linux и др …   Википедия

  • Gettext — est la bibliothèque GNU d internationalisation (i18n). Elle est couramment utilisée pour écrire des programmes multilingues. Sommaire 1 Processus 1.1 Programmeur 1.1.1 Commentaires pour les traducteurs …   Wikipédia en Français

  • Gettext — es la biblioteca GNU de internacionalización (i18n). Comúnmente se usa para escribir programas con interfaz en varios idiomas. La última versión es la 0.18. Contenido 1 Flujo de trabajo 1.1 Programador 1.2 Traductor 1.3 …   Wikipedia Español

  • GNU build system — GNU logo The GNU build system, also known as the Autotools, is a suite of programming tools designed to assist in making source code packages portable to many Unix like systems. It can be difficult to make a software program portable: the C… …   Wikipedia

  • GNU Smalltalk — Développeur Projet GNU Dernière version stable …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”