Lokalisierung

Lokalisierung ist der Vorgang, Programme zu veranlassen, sich auf eine regionsspezifische Weise zu verhalten. Wenn ein Programm Nummern oder Daten auf eine Art und Weise formatiert, die typisch für Ihren Teil der Welt ist oder Meldungen in Ihrer Muttersprache ausgibt (oder in dieser Sprache Eingaben akzeptiert), heißt es, dass das Programm lokalisiert ist. Dieser Abschnitt beschreibt die von Subversion ergriffenen Schritte bezüglich Lokalisierung.

Locales verstehen

Die meisten modernen Betriebssysteme kennen den Begriff aktuelle Locale – d.h., die Region oder das Land, deren bzw. dessen Lokalisierungskonventionen berücksichtigt werden. Diese Konventionen – typischerweise ausgewählt durch irgendeinen Laufzeit-Konfigurationsmechanismus des Rechners – beeinflussen die Art und Weise, in der Programme sowohl dem Benutzer Daten präsentieren, als auch Eingaben des Benutzers akzeptieren.

Auf den meisten Unix-ähnlichen Systemen können Sie die Werte der locale-bezogenen Konfigurationsoptionen überprüfen, indem Sie den Befehl locale aufrufen:

$ locale
LANG=
LC_COLLATE="C"
LC_CTYPE="C"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL="C"
$

Die Ausgabe ist eine Liste locale-bezogener Umgebungsvariablen mitsamt deren aktuellen Werten. In diesem Beispiel sind alle Variablen auf die Standard-Locale C gesetzt; Benutzer können diese Variablen jedoch auf bestimmte Länder-/Sprachcode-Kombinationen setzen. Wenn jemand beispielsweise die Variable LC_TIME auf fr_CA setzt, wüssten Programme, dass sie Zeit- und Datumsinformationen so präsentieren sollen, wie es französischsprachige Kanadier erwarten. Und wenn jemand die Variable LC_MESSAGES auf zh_TW setzte, wüssten Programme, dass sie menschenlesbare Meldungen in traditionellem Chinesisch ausgeben sollen. Das Setzen der Variablen LC_ALL hat zur Folge, das jede Locale-Variable auf den selben Wert gesetzt wird. Der Wert von LANG wird als Standardwert für jede nicht gesetzte Locale-Variable verwendet. Rufen Sie den Befehl locale -a auf, um die Liste der verfügbaren Locales auf einem Unix-System anzeigen zu lassen.

Unter Windows wird die Einstellung der Locale über die Regions- und Sprachoptionen der Systemsteuerung vorgenommen. Dort können Sie die Werte individueller Einstellungen aus den verfügbaren Locales ansehen, auswählen und sogar etliche der Anzeigeformatkonventionen anpassen (mit einem schwindelerregenden Detaillierungsgrad).

Wie Subversion Locales verwendet

Der Subversion-Client svn berücksichtigt die aktuelle Konfiguration der Locale auf zwei Weisen. Zunächst beachtet er den Wert der Variablen LC_MESSAGES und versucht, alle Meldungen in der angegebenen Sprache auszugeben. Zum Beispiel:

$ export LC_MESSAGES=de_DE
$ svn help cat
cat: Gibt den Inhalt der angegebenen Dateien oder URLs aus.
Aufruf: cat ZIEL[@REV]...
…

Dieses Verhalten funktioniert unter Unix und Windows auf dieselbe Weise. Beachten Sie jedoch, dass es sein kann, dass der Subversion-Client eine bestimmte Sprache nicht spricht, obwohl Ihr Betriebssystem die entsprechende Locale unterstützt. Um lokalisierte Meldungen zu erzeugen, müssen Freiwillige Übersetzungen für jede Sprache zur Verfügung stellen. Die Übersetzungen werden mit dem GNU gettext-Paket geschrieben, wodurch Übersetzungsmodule erzeugt werden, die die Dateiendung .mo haben. So heißt beispielsweise die deutsche Übersetzungsdatei de.mo. Diese Übersetzungsdateien werden irgendwo in Ihrem System installiert. Unter Unix liegen Sie typischerweise unter /usr/share/locale/, während sie unter Windows oft im Ordner share\locale\ des Subversion-Installationsbereichs zu finden sind. Sobald es installiert ist, wird das Modul nach dem Programm benannt, für das es eine Übersetzung liefert. Die Datei de.mo könnte zum Beispiel schließlich als /usr/share/locale/de/LC_MESSAGES/subversion.mo installiert werden. Sie können feststellen, welche Sprachen der Subversion-Client spricht, indem Sie nachsehen, welche .mo-Dateien installiert sind.

Die zweite Art, auf der die Locale berücksichtigt wird, bezieht sich darauf, wie svn Ihre Eingaben interpretiert. Das Projektarchiv speichert alle Pfade, Dateinamen und Protokollnachrichten in UTF-8-kodiertem Unicode. In diesem Sinne ist das Projektarchiv internationalisiert – d.h., das Projektarchiv kann Eingaben in jeder menschlichen Sprache entgegennehmen. Das heißt aber auch, dass der Subversion-Client dafür verantwortlich ist, nur Dateinamen und Protokollnachrichten in UTF-8 an das Projektarchiv zu schicken. Um das zu bewerkstelligen, muss er die Daten aus der aktuellen Locale in UTF-8 umwandeln.

Nehmen wir zum Beispiel an, Sie erzeugen eine Datei namens caffè.txt und schreiben bei der Übergabe die Protokollnachricht Adesso il caffè è più forte. Sowohl der Dateiname als auch die Protokollnachricht enthalten Nicht-ASCII-Zeichen, doch da Ihre Locale auf it_IT gesetzt ist, weiß der Subversion-Client, dass er sie als italienisch interpretieren muss. Er verwendet einen italienischen Zeichensatz, um die Daten in UTF-8 umzuwandeln, bevor sie an das Projektarchiv gesendet werden.

Beachten Sie, dass das Projektarchiv sich nicht um den Inhalt von Dateien kümmert, obwohl es Dateinamen und Protokollnachrichten in UTF-8 verlangt. Subversion betrachtet Dateiinhalte als undurchsichtige Bytefolgen, und weder Client noch Server versuchen, den Zeichensatz oder die Kodierung der Inhalte zu verstehen.