<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=GNU_gettext</id>
	<title>GNU gettext - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=GNU_gettext"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=GNU_gettext&amp;action=history"/>
	<updated>2026-06-03T01:46:57Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=GNU_gettext&amp;diff=485756&amp;oldid=prev</id>
		<title>imported&gt;Polarlys: /* Weblinks */ veraltet, 404</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=GNU_gettext&amp;diff=485756&amp;oldid=prev"/>
		<updated>2025-03-01T09:23:34Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Weblinks: &lt;/span&gt; veraltet, 404&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox Software&lt;br /&gt;
|Name= GNU gettext&lt;br /&gt;
|Screenshot= &lt;br /&gt;
|Beschreibung= &lt;br /&gt;
|Hersteller= GNU-gettext-Team&lt;br /&gt;
|Maintainer= Daiki Ueno&lt;br /&gt;
|AktuelleVersion= &amp;lt;!--von Wikidata--&amp;gt;&lt;br /&gt;
|AktuelleVersionFreigabeDatum= &lt;br /&gt;
|Betriebssystem= [[Unix|Unix-artige]] Betriebssysteme, [[Windows]] (s. Weblinks)&lt;br /&gt;
|Kategorie= [[Lokalisierung (Softwareentwicklung)|Lokalisierung]]&lt;br /&gt;
|Lizenz= [[GNU General Public License|GPL]]: Anwendung und libgettextpo Bibliothek, [[GNU Lesser General Public License|LGPL]]: libintl und libasprintf Bibliothek&lt;br /&gt;
|Deutsch= nein&lt;br /&gt;
|Website= [https://www.gnu.org/software/gettext/ GNU gettext Homepage]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GNU gettext&amp;#039;&amp;#039;&amp;#039; ist eine [[GNU]]-[[Programmbibliothek]] zur [[Internationalisierung (Softwareentwicklung)|Internationalisierung]] von Software. Normalerweise wird sie zur Entwicklung von mehrsprachigen Programmen genutzt.&lt;br /&gt;
&lt;br /&gt;
== Arbeitsablauf ==&lt;br /&gt;
=== Programmierer ===&lt;br /&gt;
[[Datei:Gettext.svg|mini|Arbeitsablauf]]&lt;br /&gt;
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 &amp;lt;code&amp;gt;gettext&amp;lt;/code&amp;gt; ausgegeben werden sollen. Aus Gründen der Übersichtlichkeit ist diese Funktion ebenfalls unter dem Namen &amp;lt;code&amp;gt;_&amp;lt;/code&amp;gt; ansprechbar, so dass das folgende Codebeispiel (in&amp;amp;nbsp;[[C (Programmiersprache)|C]]) von&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
printf(&amp;quot;Mein Name ist %s.\n&amp;quot;, mein_name);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
in&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 printf(_(&amp;quot;Mein Name ist %s.\n&amp;quot;), mein_name);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
geändert werden müsste. Dieses ist gleichbedeutend mit&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 printf(gettext(&amp;quot;Mein Name ist %s.\n&amp;quot;), mein_name);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GNU gettext ist außer in C mittlerweile auch in [[C++]], [[Objective-C]], [[Bourne-Shell|sh]] script, [[Bourne-again shell|Bash]] script, [[Python (Programmiersprache)|Python]], [[Ruby (Programmiersprache)|Ruby]], GNU [[CLISP]], [[Emacs Lisp]], librep, GNU [[Smalltalk (Programmiersprache)|Smalltalk]], [[Java (Programmiersprache)|Java]], GNU [[awk]], [[Pascal (Programmiersprache)|Pascal]], [[Borland Delphi|Delphi]], [[Gambas (Programmiersprache)|Gambas]], [[wxWidgets]] (mit Hilfe der wxLocale-Klasse), YCP (der [[YaST2]]-Sprache), [[Tcl]], [[Perl (Programmiersprache)|Perl]], [[PHP]] und [[Pike (Programmiersprache)|Pike]] verfügbar. Die Benutzung von &amp;lt;code&amp;gt;gettext&amp;lt;/code&amp;gt; in diesen Systemen ist dabei in der Regel sehr ähnlich derjenigen von&amp;amp;nbsp;C.&lt;br /&gt;
&lt;br /&gt;
Mit &amp;lt;code&amp;gt;xgettext&amp;lt;/code&amp;gt; werden die Quelldateien analysiert, um eine &amp;#039;&amp;#039;&amp;#039;.pot&amp;#039;&amp;#039;&amp;#039;-Datei (&amp;#039;&amp;#039;&amp;#039;Portable Object Template&amp;#039;&amp;#039;&amp;#039;) 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:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;pot&amp;quot;&amp;gt;&lt;br /&gt;
#: src/name.c:36&lt;br /&gt;
msgid &amp;quot;Mein Name ist %s.\n&amp;quot;&lt;br /&gt;
msgstr &amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Übersetzer ===&lt;br /&gt;
Der Übersetzer erstellt eine &amp;#039;&amp;#039;&amp;#039;.po&amp;#039;&amp;#039;&amp;#039;-Datei (&amp;#039;&amp;#039;&amp;#039;Portable Object&amp;#039;&amp;#039;&amp;#039;) aus der Vorlage mit dem Programm &amp;lt;code&amp;gt;msginit&amp;lt;/code&amp;gt; und erstellt anschließend die Übersetzungen. &amp;lt;code&amp;gt;msginit&amp;lt;/code&amp;gt; initialisiert die Übersetzung, wenn man also eine englische Übersetzung erstellen möchte, müsste man &amp;lt;code&amp;gt;msginit&amp;lt;/code&amp;gt; wie folgt aufrufen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;pot&amp;quot;&amp;gt;&lt;br /&gt;
msginit --locale=en --input=name.pot&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Dieser Aufruf würde die Datei en.po erstellen, ein Eintrag in dieser Datei würde z.&amp;amp;nbsp;B. so aussehen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;pot&amp;quot;&amp;gt;&lt;br /&gt;
#: src/name.c:36&lt;br /&gt;
msgid &amp;quot;Mein Name ist %s.\n&amp;quot;&lt;br /&gt;
msgstr &amp;quot;Mein Name ist %s.\n&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
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:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;pot&amp;quot;&amp;gt;&lt;br /&gt;
#: src/name.c:36&lt;br /&gt;
msgid &amp;quot;Mein Name ist %s.\n&amp;quot;&lt;br /&gt;
msgstr &amp;quot;My name is %s.\n&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Abschließend werden die .po-Dateien mit &amp;lt;code&amp;gt;msgfmt&amp;lt;/code&amp;gt; in binäre &amp;#039;&amp;#039;&amp;#039;.mo&amp;#039;&amp;#039;&amp;#039;- (&amp;#039;&amp;#039;&amp;#039;Machine Object&amp;#039;&amp;#039;&amp;#039;) bzw. &amp;#039;&amp;#039;&amp;#039;.gmo&amp;#039;&amp;#039;&amp;#039;-Dateien (&amp;#039;&amp;#039;&amp;#039;GNU Machine Object&amp;#039;&amp;#039;&amp;#039;) übersetzt. Diese können nun mit dem Softwarepaket ausgeliefert werden. Damit die Bibliothek die Datei findet, wird sie nun in ein (z.&amp;amp;nbsp;B. in C mittels der Funktion &amp;lt;code&amp;gt;bindtextdomain(&amp;#039;&amp;#039;name&amp;#039;&amp;#039;,&amp;quot;/usr/share/locale&amp;quot;)&amp;lt;/code&amp;gt;) vordefiniertes Verzeichnis kopiert. Das Objekt namens &amp;#039;&amp;#039;name.mo&amp;#039;&amp;#039; (&amp;#039;&amp;#039;name&amp;#039;&amp;#039; ist die &amp;#039;&amp;#039;Domain&amp;#039;&amp;#039;, also z.&amp;amp;nbsp;B. der Name des Programmpakets, angegeben als erstes Argument von &amp;lt;code&amp;gt;bindtextdomain()&amp;lt;/code&amp;gt;). Das &amp;#039;&amp;#039;Message Object&amp;#039;&amp;#039; liegt dann in &amp;lt;code&amp;gt;/usr/share/locale/&amp;lt;Sprachkürzel&amp;gt;/LC_MESSAGES/name.mo&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
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.&amp;amp;nbsp;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.&lt;br /&gt;
&lt;br /&gt;
=== Benutzer ===&lt;br /&gt;
Der Benutzer auf einem [[Unix]]- (oder Unix-ähnlichen) System definiert die [[Locale]] mithilfe der [[Umgebungsvariable]]n &amp;lt;code&amp;gt;LC_ALL&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LC_MESSAGES&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;LANG&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;LANGUAGE&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Unter Windows wird automatisch die Sprache verwendet, die unter „Region“ eingestellt ist.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Lokalisierung (Softwareentwicklung)]]&lt;br /&gt;
* [[XML Localization Interchange File Format]] (XLIFF)&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
{{Wikibooks|Computerbasierte Übersetzung}}&lt;br /&gt;
* [https://www.gnu.org/software/gettext/ &amp;#039;&amp;#039;gettext&amp;#039;&amp;#039;.] GNU&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:C-Bibliothek]]&lt;br /&gt;
[[Kategorie:Internationalisierung und Lokalisierung]]&lt;br /&gt;
[[Kategorie:GNU-Paket]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Polarlys</name></author>
	</entry>
</feed>