J'ai généré des fichiers de localisation en_US.utf8 , et_EE.iso88591 et ru_RU.utf8 . Maintenant, si j'essaie de changer l'une des variables locales en ru_RU.utf8 ou en_US.utf8 , cela n'a aucun effet:
# 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"
#
Cependant, si je change la variable LANG = , toutes les autres variables sauf LANGUAGE = et LC_ALL = prennent la valeur de la variable LANG = . Existe-t-il un moyen de modifier chaque variable locale séparément? De plus, ai-je raison de dire que les variables locales ne sont pas des variables shell normales, mais plutôt des paramètres de l' utilitaire local ?
la source
LANG
etLC_xxx
sont des variables d'environnement? mes tests montrent que seulementLANG
etLANGUAGE
etLC_MESSAGES
etLC_ALL
sont des variables d'environnement, tandis que d'autres variables aimentLC_CTYPE
etLC_MONETARY
ne sont pas des variables d'environnement (aussi, ce ne sont pas des variables shell)?env LC_TIME=en_GB date
avecenv LC_TIME=fr_FR date
etenv PATH="$PATH" date
(évidemment, choisissez les paramètres régionaux qui existent sur votre système). De toute évidence, chaque variable peut ou non être définie dans l'environnement d'un processus donné. Quels tests avez-vous effectués? Êtes-vous sûr que l'application que vous avez utilisée se comporte différemment selonLC_CTYPE
(assez courante) etLC_MONETARY
(assez rare)?printenv
commande pour répertorier les variables d'environnement de bash, et uniquementLANG
etLANGUAGE
etLC_MESSAGES
etLC_ALL
ont été répertoriés comme variables d'environnement. J'ai également exécuté la commandeset -o posix
suivie de la commandeset
pour obtenir les variables d'environnement et les variables shell de bash, et seulementLANG
etLANGUAGE
etLC_MESSAGES
etLC_ALL
ont été répertoriés. Cela signifie donc queLANG
etLANGUAGE
etLC_MESSAGES
etLC_ALL
sont des variables d'environnement et que les autres variables locales ne le sont pas, et ce ne sont pas non plus des variables shell.LANG
,LANGUAGE
,LC_MESSAGES
etLC_ALL
. (Vous l'avez fait explicitement ou votre distribution ou votre administrateur système l'a fait pour vous.) Vous pouvez définir une variable d'environnement par n'importe quel nom (syntaxiquement valide)! Mais certains noms sont significatifs pour certaines applications, et certains noms ne le sont pas.LC_MESSAGES
,LC_CTYPE
,LC_TIME
Et ainsi de suite sont utilisés par des applications qui se soucient de la langue des messages d'erreur, le codage de caractères, le format de l' heure, et ainsi de suite.LC_ALL
remplace tous les autres paramètres, donc la valeur des autres variables locales n'a pas d'importance. Il n'est normalement utilisé que temporairement pour forcer un programme à utiliser un environnement local donné, cela n'a aucun sens de l'avoir dans votre environnement normal.Sous les distributions basées sur Fedora / CentOS / RHEL, je pense que vous pouvez changer les paramètres régionaux en l'un des paramètres régionaux affichés lorsque vous exécutez la
locale -a
commande dans ce fichier système:Par exemple sur mon système Fedora 14:
Sous GNOME, vous pouvez exécuter l'application d'aide:
Ce qui fait apparaître cette interface graphique:
Je pense que c'est légèrement différent pour les distributions Debian / Ubuntu. Je crois que c'est ce fichier:
Je pense que ce sont des variables d'environnement, mais je ne sais pas trop comment les applications les utilisent, le cas échéant.
Les références
la source
Sur RedHat 6 au moins, notez que si LC_ALL est défini, la définition d'autres variables d'environnement LC_ * n'aura aucun effet, car LC_ALL a priorité sur toutes les autres variables d'environnement LC_ *.
la source
Dans les systèmes Debian, on peut exécuter
dpkg-reconfigure locales
pour définir la langue principale et en rendre d'autres disponibles; alors on peut exécuterupdate-locale
pour définir laLANGUAGE
variable d'environnement/etc/default/locale
pour avoir des langues de secours.la source
dpkg-reconfigure locales
, paslocale