Umgebungsvariable LANG und LANGUAGE in Debian-basierten Systemen

22

Es scheint, dass einige Programme sowohl die Umgebungsvariable LANG als auch die Umgebungsvariable LANGUAGE verwenden, um die Sprache ihrer Benutzeroberfläche zu bestimmen.

Was ist die genaue Semantik dieser Variablen und wo kann ich ihre korrekte Verwendung nachlesen? Die Manpage für locale (1) erwähnt nur die LC_ * -Familie von Umgebungsvariablen. Zusätzlich gibt es auch eine LC_ALL-Variable, die dort ebenfalls nicht beschrieben ist.

aef
quelle

Antworten:

23

LANGEnthält die Einstellung für alle Kategorien, die nicht direkt von einer LC_*Variablen festgelegt werden.

LC_ALLwird verwendet, um alle LC_*und LANGund zu überschreiben LANGUAGE. Es sollte nicht in einer normalen Benutzerumgebung festgelegt werden, kann jedoch nützlich sein, wenn Sie ein Skript schreiben, das von der genauen Ausgabe eines internationalisierten Befehls abhängt.

LANGUAGEwird verwendet, um die Nachrichtensprachen (as LC_MESSAGES) auf einen mehrwertigen Wert zu setzen, z. B. fr:de:enum französische Nachrichten zu verwenden, wenn sie existieren. Andernfalls werden deutsche Nachrichten verwendet, und es wird auf Englisch zurückgegriffen, wenn weder deutsche noch französische Nachrichten verfügbar sind.

Rémi
quelle
Wo finde ich Dokumentation zu LANGUAGE? Schließt es LC_MESSAGES gegenseitig aus?
22.
1
@ Rémi kannst du näher erläutern, warum LC_ALLman es nicht benutzen sollte?
Édouard Lopez
1
Nicht viel zu sagen. Sie haben mehr Flexibilität, wenn Sie LANG festlegen, als wenn Sie LC_ALL festlegen: Sie können LANG auf etwas und LC_COLLATE auf etwas anderes festlegen. Wenn Sie LC_ALL setzen, werden alle anderen Konfigurationen ausgeblendet.
Rémi
2
Ich denke nicht, dass LC_ALLÜberschreibungen LANGUAGE: 1. Sie haben unterschiedliche Bedeutungen (Reihenfolge [zB: fr: de: en] vs. Merkmale [zB: fr_FR])
Murmel
6
2. Die GNU getText Dokumentation des Kapitels eine Prioritätenliste der Sprachen angeben heißt es : gettext gives preference to LANGUAGE over LC_ALL and LANG. Darüber hinaus heißt es im Kapitel Umgebungsvariablen für das Gebietsschema :1. LANGUAGE 2. LC_ALL [...]
Murmel
10

Schauen Sie sich die Manpage an locale(7): Sie beschreibt, dass LANGes sich um eine Fallback-Einstellung handelt, während LC_ALLalle separaten LC_*Einstellungen außer Kraft gesetzt werden.

Jaap Eldering
quelle
3
Mann 7 Gebietsschema ist der Befehl
Smile4ever
2

Als Referenz dient GNU GetText, dessen vollständige Dokumentation im gettext-doc-Paket (Debian / Ubuntu) verfügbar ist.

Alternativ gibt es ein Online-Handbuch mit einer aussagekräftigen und ausführlichen Dokumentation der Umgebungsvariablen LANG und LANGUAGE .

Mikini
quelle