# Locale

Das Locale ist ein Einstellungssatz, der die Gebietsschemaparameter (Standortparameter) für Computerprogramme enthält.
Dazu gehören in erster Linie die Sprache der Benutzeroberfläche, das Land und Einstellungen zu Zeichensatz, Tastaturlayout, Zahlen-, Währungs-, Datums- und Zeitformaten. Ein Einstellungssatz wird üblicherweise mit einem Code, der meist Sprache und Land umfasst, eindeutig identifiziert.
In unterschiedlichen Betriebssystemen gibt es verschiedene Konzepte für Gebietseinstellungen:

## Windows

Unter Microsoft Windows werden Gebietsschemaparameter durch eine Zahl (z. B. 0x0407 für Deutsch oder 0x0409 für Englisch/US, weitere Ländercodes über den Weblink) angesprochen und enthalten Daten zu Darstellungsformaten, Codepages und Tastaturlayouts. Windows-Programme können nur dann ohne Kenntnis des Programmquelltextes übersetzt werden, wenn die zu lokalisierenden Informationen (Zeichenketten, Fensterlayouts, Menüs, Bilder usw.) als Programmressourcen gespeichert sind. Dabei geht in der Regel die Originalübersetzung verloren.

## .NET

In Microsofts .NET-Framework-Anwendungen werden locale-abhängige Ein- und Ausgaben über die Klasse System.Globalization.CultureInfo gesteuert, wobei standardmäßig die des zugrundeliegenden Betriebssystems verwendet wird. Standorteinstellungen werden mit einer Kennzeichnung aus Sprache und Land identifiziert, z. B. de-DE oder en-US. Die Texte für locale-abhängigen Benutzeroberflächen können wiederum mittels Ressourcen-XML-Dateien (.resx) angepasst werden.

## POSIX

Unter POSIX-Plattformen werden die Übersetzungsfunktionen über die 'Locale'-Funktionen in der Standard C Library implementiert und stehen deshalb in sehr vielen Programmen zur Verfügung. Die Locale wird über die Environment-Variablen LANG und LC_* (z. B. LC_TIME für das Datumsformat) festgelegt und kann daher von User zu User und sogar von Prozess zu Prozess unterschiedlich sein. Die Locale-Bezeichnungen haben üblicherweise das Format [language[_territory][.codeset][@modifier]]. Sprache und Gebiet werden durch zwei- oder dreistellige ISO 639 bzw. zweistellige ISO 3166-Codes repräsentiert (z. B. de_DE für Deutsch/Deutschland, de_AT für Deutsch/Österreich, de_CH für Deutsch/Schweiz oder gsw_CH für Schweizerdeutsch/Schweiz). Der modifier ist dafür vorgesehen, kategoriespezifische Varianten zu wählen, z. B. eine Währung, ein Datumsformat oder eine Sortierreihenfolge. In der Praxis steht diese Möglichkeit aber mangels vordefinierter Locales meist nicht zur Verfügung.

## Mac OS X

Unter Mac OS X kann man Standorteinstellungen und andere Parameter in ~/.MacOSX/environment.plist setzen, in nachfolgendem Beispiel auf UTF-8:
Sollte die Datei nicht existieren, können Verzeichnis und Datei einfach erzeugt werden.

## Java

Die Java-Plattform bildet 'Locale'-Funktionen über die Klasse java.util.Locale ab. Standorteinstellungen werden hier mit einer Kennzeichnung aus Sprache und Land identifiziert (z. B. de_DE für Deutsch/Deutschland oder de_AT für Deutsch/Österreich). Zusätzlich kann über das Attribut Variant auch auf Regionen Bezug genommen werden (siehe hierzu auch ISO 3166-2:AT, ISO 3166-2:CH, ISO 3166-2:DE). Die Internationalisierung bzw. Lokalisierung erfolgt auf Basis von sogenannten ResourceBundles („Ressourcenbündel“), welche in Java mit der Klasse java.util.ResourceBundle abgebildet werden.

## CLDR

Das Common Locale Data Repository ist ein Projekt, das Locales für viele Sprachen bereitstellt und über Bibliotheken in unterschiedlichen Programmiersprachen genutzt werden kann.