Programmoberflächen internationalisieren
Dienstag, 02.02.2010 um 15:28 UhrMoin liebe Lesergemeinde,
jeder Programmierer wird sich irgendwann die Frage stellen, welche (G)UI-Sprachen das eigene Programm unterstützen solle. Sind das nur zwei Sprachen, kann man dies noch im Quellcode selbst unterbringen (sollte man trotzdem nicht tun). Doch schon bei drei Sprachen ist das ziemlich aussichtslos.
Irgendwann stand auch ich vor dem Problem und habe ein gutes Tutorial gesucht solch eine Internationalisierung der Benutzeroberfläche zu Bewerkstelligen. Bei Linux Magazin wurde ich in einem sehr ausführlichen Artikel über die Funktion gettext() fündig (zum Artikel geht es hier).
Nutzt auch ihr dieses System oder gibt es noch andere/bessere Alternativen?

Also ich benutze gerne GNU GetText, egal in welcher Sprache… Unter C/C++ würde mir auch nichts besseres und einfacheres einfallen.
Gettext ist außerdem de-facto Standard in der Linux/Unix-Welt.
Falls Qt als GUI-Bibliothek verwendet wird, wird so etwas in der Art wie GNU GetText bereits mitgeliefert. Mit Hilfe des Tools Qt-Linguist können alle Strings über eine grafische Oberfläche in beliebige Sprachen übersetzt werden. Ein kleines Tutorial dazu gibts bspw. hier: http://www.qtforum.de/forum/viewtopic.php?p=15560&sid=c4d7d3df15d8fe10c5794b85104509db
Upps, zu schnell abgeschickt. Hier gibts noch mehr Infos zur Übersetzung eines Qt-Programms in andere Sprachen falls Interesse besteht
http://qt.nokia.com/doc/4.6/linguist-manual.html
Ich verwende in meinem neuen Projekt http://www.linuware.com ebenfalls die Gettext-Funktion _().
Allerdings hab ich bis jetzt noch kein geeignetes Tool zum Auslesen der übersetzbaren Zeichenketten gefunden – mehrere verschieden-artige Dateien (.php, .phtml, …) in verschachtelten Verzeichnissen stellen das Problem dar.
Momentan tut es ein selbst geschriebenes PHP-Skript. Es liest auf einen Rutsch ein komplettes Verzeichnis bzw. die Dateiinhalte rekursiv aus und schreibt die übersetzbaren Zeichenketten in eine .POT-Datei. Aber es hat auch so seine Mängel – lediglich _(”") werden erkannt; nicht aber _(”).
Kennt jemand ein entsprechendes Tool?