Ich habe erzeugtde_DE.utf8,et_EE.iso88591Undru_RU.utf8Lokalisierungsdateien. Wenn ich nun versuche, eine der Lokalisierungsvariablen in eineru_RU.utf8oderde_DE.utf8, dann hat dies keine Auswirkung:
# locale -a
C
en_US.utf8
et_EE
et_EE.iso88591
POSIX
ru_RU.utf8
# LC_TIME=ru_RU.utf8
# locale | grep LC_TIME
LC_TIME="et_EE.iso88591"
# LC_TIME="ru_RU.utf8"
# locale | grep LC_TIME
LC_TIME="et_EE.iso88591"
#
Wenn ich jedoch dieLANG=Variable, dann alle anderen Variablen außerSPRACHE=UndLC_ALL=nehmen Sie den Wert derLANG=Variable. Gibt es eine Möglichkeit, jede Lokalvariable einzeln zu ändern? Habe ich außerdem Recht, dass Lokalvariablen keine normalen Shellvariablen sind, sondern eher Parameter fürGebietsschemaDienstprogramm?
Antwort1
Sie können jede Gebietsschemakategorie unabhängig festlegen. LANG
Gilt nur für die Kategorien, die nicht explizit festgelegt sind.
LANG
und LC_xxx
sind normale Umgebungsvariablen. Sie sind keine Einstellungen für das locale
Dienstprogramm: Das locale
Programm ist nicht an der Gebietsschemaverarbeitung beteiligt, es ist nur ein kleines Dienstprogramm zum Melden aktueller und verfügbarer Gebietsschemaeinstellungen.
Wenn Sie schreiben LC_TIME=ru_RU.utf8
, wird keine Umgebungsvariable festgelegt, sondern nur eine Shell-Variable. Shell-Variablen sind intern in der Shell, sie werden von anderen Programmen nicht gesehen. Umgebungsvariablen hingegen werden von den Programmen geerbt, die die Shell startet. Sie müssen die Variable auch in die Umgebung exportieren:
$ LC_TIME=ru_RU.utf8
$ locale | grep LC_TIME
LC_TIME="et_EE.iso88591"
$ export LC_TIME
$ locale | grep LC_TIME
LC_TIME="ru_RU.utf8"
oder direkt
$ export LC_TIME=ru_RU.utf8
$ locale | grep LC_TIME
LC_TIME="ru_RU.utf8"
Antwort2
Ich glaube, dass Sie unter den auf Fedora/CentOS/RHEL basierenden Distributionen das Gebietsschema in eines der angezeigten Gebietsschemas ändern können, wenn Sie den locale -a
Befehl in dieser Systemdatei ausführen:
/etc/sysconfig/i18n
Zum Beispiel auf meinem Fedora 14-System:
$ more /etc/sysconfig/i18n
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"
Unter GNOME können Sie die Hilfe-App ausführen:
system-config-language
Dadurch wird diese GUI aufgerufen:
Ich denke, bei den Debian/Ubuntu-Distributionen ist es etwas anders. Ich glaube, es ist diese Datei:
/etc/default/locale
Ich glaube, dass es sich um Umgebungsvariablen handelt, bin mir aber nicht ganz sicher, ob und wie Anwendungen sie nutzen.
Verweise
Antwort3
Beachten Sie zumindest unter RedHat 6, dass, wenn LC_ALL festgelegt ist, das Festlegen anderer LC_*-Umgebungsvariablen keine Auswirkungen hat, da LC_ALL Vorrang vor allen anderen LC_*-Umgebungsvariablen hat.
[root@nbu76 bin]# LC_TIME=en_US.UTF-8
[root@nbu76 bin]# export LC_TIME
[root@nbu76 bin]# locale
LANG=en_US.UTF-8
LC_CTYPE="en_IE"
LC_NUMERIC="en_IE"
LC_TIME="en_IE"
...
LC_ALL=en_IE
[root@nbu76 bin]# unset LC_ALL
[root@nbu76 bin]# locale
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME=en_US.UTF-8
...
LC_ALL=
[root@nbu76 bin]# export LC_TIME=en_IE
[root@nbu76 bin]# locale
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME=en_IE
....
LC_ALL=
Antwort4
In Debian-Systemen können Sie dpkg-reconfigure locales
die Hauptsprache festlegen und andere verfügbar machen. Anschließend können Sie die Umgebungsvariable update-locale
festlegen , um Ersatzsprachen zu haben.LANGUAGE
/etc/default/locale