Open Source im professionellen Einsatz
Newsletter abonnieren
HEFTARCHIV | NEWS | VIDEO | BLOGS | WHITEPAPER | EVENTS | ACADEMY | ABO

Partner-Links:
Yatego Shopping
Notebook Themenwelt
 
Yatego Deutschlands größte Shoppingmall. Über 8500 Shops, und 3 Mio Artikel.
Alle Bestseller, Gutscheine
und Shopping Tops.

Firewall bei Mercateo kaufen.

Ein Preisvergleich bei Hardware lohnt sich.

Sie suchen günstige Laptops? Schauen Sie doch mal bei Preisvergleich.org, Preisvergleich.eu, Preisvergleich.ch und Preisvergleich.at vorbei.

Linux Jobs

Job offers Netherlands


user friendly

  Home  »  Heft & Abo  »  Heftarchiv  »  2005  »  12  »  Programme von Welt  

RSS-Feed der aktuellen News von Linux-Magazin Online Folgen Sie Linux-Magazin Online auf Twitter
Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark

Software internationalisieren mit Gettext

Programme von Welt

von Tim Schürmann
Erschienen im Linux-Magazin 2005/12

Ein Programm nachträglich für mehrere Landessprachen umzubauen erfordert hohen Aufwand. Besser ist es, von Anfang an im Sourcecode die nötigen Vorkehrungen für mehrsprachige Strings zu schaffen. Das Gettext-System bietet dafür die passende Infrastruktur.

Choose a language - oder doch lieber "Wählen Sie eine Sprache"? Eine Software in viele Landessprachen übersetzen wird angesichts der weltweiten Verbreitung von Linux immer wichtiger. Häufig kocht dabei aber jeder Programmierer sein eigenes Süppchen. Während Hardliner alle Sprachen direkt im Quellcode unterbringen, trennen umsichtige Entwickler mit selbst entwickelten Systemen Programmcode und Textausgabe. Um Wildwuchs zu vermeiden, schuf das GNU-Projekt 1995 das Gettext-Paket.

Dolmetscher

Gettext besteht aus einigen Programmen und einer Bibliothek, die im Zusammenspiel die Übersetzungsarbeiten nicht nur radikal vereinfachen, sondern gleichzeitig auch standardisieren. Welche Programmiersprachen Gettext gegenwärtig beherrscht, verrät der Kasten "Unterstützte Programmiersprachen".

Als Beispiel für die Übersetzung von Software dient das bekannte Hello World in C. Dieses Programm gibt über die Funktion »printf()« stur den englischen Text "Hello World" aus, egal wo die Anwendung sie auch immer ausführt. Um der Software Deutsch beizubringen, bindet man in einem ersten Stritt das Gettext-System ein. Das erledigen diese beiden Headerdateien:

#include <libintl.h>
#include <locale.h>

»libintl.h« enthält die im Folgenden verwendeten Funktionen, »locale.h« einige wichtige Konstanten. Nun wäre es schön, wenn das Programm die Zeichenkette »hello world« selbstständig gegen das deutsche Pendant austauschen würde - abhängig vom Inhalt der Sprach-Umgebungsvariablen wie »LANG« (siehe Kasten "Umgebungsvariablen"). Dabei hilft die Funktion »gettext()«, die dem Paket seinen Namen verlieh. Aus »printf("hello worldn")« wird somit »printf(gettext("hello worldn"))«.

Während der Ausführung schlägt Gettext in einer Datei die Übersetzung für »hello worldn« nach und liefert die passende deutsche Zeichenkette zurück. Ist keine entsprechende Übersetzungsdatei vorhanden oder tritt ein anderer Fehler auf, erscheint der im Quellcode festgelegte String. Auf diese Weise lassen sich alle Zeichenketten, die der Benutzer später zu Gesicht bekommt, in Gettext-Funktionsaufrufen kapseln.

Kleiner Langenscheidt

Die in der Gettext-Terminologie als Kataloge bezeichneten Übersetzungsdateien muss der Programmierer selbst erzeugen. Dabei hilft das Programm Xgettext:

xgettext -d hello -n hello.c

Dieser Aufruf findet in der Datei »hello.c« alle »gettext«-Aufrufe und speichert die entsprechenden Zeichenketten in einer ».po«-Datei (für Portable Object). Im Hello-World-Beispiel sieht das Ergebnis aus wie in Listing 1. Am Anfang der Datei stehen die allgemeinen Informationen wie etwa Übersetzer oder Erstellungsdatum. Kommentare beginnen mit einer Raute »#«.

Am wichtigsten sind die letzten vier Zeilen. Zunächst ist nach dem »#:« der Ort der Zeichenkette angegeben, im Beispiel Zeile 8 von »hello.c«. Dem »#,« folgen die so genannten Flags. Hier legt »c-format« fest, dass die Nachricht ein String im C-Format ist. Hilfsprogramme können mit dieser Information prüfen, ob die C-typischen Steuerzeichen wie »n« oder »%d« auch in der Übersetzung auftauchen. Hinter »msgid« steht der Ursprungstext, darunter bei »msgstr« die Übersetzung, die im Beispiel noch fehlt.

Für jede zu unterstützende Sprache ist eine solche Datei anzulegen und vom entsprechenden Dolmetscher auszufüllen. Das kann entweder per Texteditor oder mit einem der zahlreichen Übersetzungsprogramme geschehen. Beispiele für diese Werkzeuge sind PO-Edit (Abbildung 1), KBabel oder Gtranslator. Praktisch dafür ist auch das Ubuntu-Projekt Rosetta (Abbildung 2).

Unterstützte
Programmiersprachen

C, C++, Objective C, Shellskripte, Python, Librep (Lisp), GNU Smalltalk, Java, GNU Awk, Pascal (Free Pascal Compiler), YCP (Yast-Skriptsprache), Tcl/Tk, Perl, PHP, Pike.

Das Hilfsprogramm »xgettext« ist standardmäßig auf C und C++ eingestellt. Bei Bedarf deaktiviert der Parameter »-L Sprache« die Erkennungsautomatik.

Um nicht für jede Sprache Xgettext starten zu müssen, gibt der Programmierer der einmal produzierten Datei am besten die Endung ».pot« für Portable Object Template und verwendet sie als Vorlage für alle weiteren Kataloge. Wie man mit Änderungen am Quellcode umgeht, verrät der Kasten "Revisionen".

Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark
Ähnliche Artikel
Vom Thron gestürzt Die besten Lesereinsendungen des Programmierwettbewerbs
Dunkle Wolken Was Neatx kann und was Google damit vorhat
Nebenläufig Concurrent Programming mit Clojure
Alles geht Welche Programmiersprache sich für welche Probleme eignen
Groß in Mode Workshop: Major Modes für (X)Emacs
Angler-Paradies Informationen aus Webseiten mit Tcl extrahieren
Whitepaper
Anbindung OpenCms an Liferay Portal

Liferay Portal ist heute nicht nur die breiteste, sondern auch funktional umfassendste Entwicklung im Open Source Portalumfeld. Es eignet sich in Unternehmen als prozessorientiertes und integratives Enterprise Portal mit hervorragenden Collaboration-Funktionen. Teilweise stößt jedoch das in Liferay integrierte CMS an seine Grenzen, insbesondere bei der Publikation umfangreicher Informationsmengen. Aus diesem Grund hat comundus eine Anbindung des Web CMS OpenCms an Liferay realisiert. In dieser Kombination wird Liferay Portal zu einem vollwertigen Publishing-Portal mit sämtlichen Funktionalitäten, die heute von einem CMS erwartet werden.

The Role of Open Source in Data Integration

Obwohl in den letzten Jahren viele technische Fortschritte erzielt werden konnten, verfügen die meisten Datenintegrationsprozesse nach wie vor nur über eine sehr begrenzte Automatisierung. Das vorliegende White Paper von dem Industry Analyst Mark Madson wird zunächst ein grundlegendes Verständnis von Daten Integration vermitteln, die Vorzüge von Open Source Lösungen für Daten Integration erläutern und Ihnen professionelle Empfehlungen geben, damit Sie Ihre Integrationsjobs noch einfacher und produktiver gestalten können.

Download PDF (Registrierung erforderlich)
Kommentare (0)
 

Impressum |Datenschutzerklärung  | Mediadaten  | © 2010Linux New Media AG
Linux New Media Websites
Deutschland: [Admin-Magazin] [LinuxUser] [EasyLinux] [Linux-Community] [Linux Technical Review] [Ubuntu User]
Europa: [EasyLinux Polen] [Linux Magazine Polen] [Linux Magazine Spanien]
International: [Linux Magazine International] [Linux Pro Magazine] [Ubuntu User] [Linux Magazine Brasilien] [EasyLinux Brasilien]