yo he generadoes_US.utf8,et_EE.iso88591yru_RU.utf8archivos de localización. Ahora, si intento cambiar cualquiera de las variables locales a unaru_RU.utf8oes_US.utf8, entonces esto no tiene ningún efecto:
# 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"
#
Sin embargo, si cambio elIDIOMA=variable, luego todas las demás variables exceptoIDIOMA=yLC_ALL=tomar el valor de laIDIOMA=variable. ¿Hay alguna manera de modificar cada variable local por separado? Además, ¿tengo razón en que las variables locales no son variables de shell normales, sino más bien parámetros paralugar¿utilidad?
Respuesta1
Puede configurar cualquier categoría local de forma independiente. LANG
Se aplica sólo a las categorías que no están establecidas explícitamente.
LANG
y LC_xxx
son variables de entorno ordinarias. No son configuraciones para la locale
utilidad: el locale
programa no participa en ningún procesamiento local, es solo una pequeña utilidad para informar las configuraciones locales actuales y disponibles.
Cuando escribes LC_TIME=ru_RU.utf8
, esto no establece una variable de entorno, solo una variable de shell. Las variables del Shell son internas al Shell, no son vistas por otros programas. Las variables de entorno, por otro lado, las heredan los programas que inicia el shell. También debes exportar la variable al entorno:
$ 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"
o directamente
$ export LC_TIME=ru_RU.utf8
$ locale | grep LC_TIME
LC_TIME="ru_RU.utf8"
Respuesta2
En las distribuciones basadas en Fedora/CentOS/RHEL, creo que puede cambiar la configuración regional a una de las que se muestran cuando ejecuta el locale -a
comando en este archivo de sistema:
/etc/sysconfig/i18n
Por ejemplo en mi sistema Fedora 14:
$ more /etc/sysconfig/i18n
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"
En GNOME puedes ejecutar la aplicación de ayuda:
system-config-language
Lo que muestra esta GUI:
Creo que es ligeramente diferente para las distribuciones Debian/Ubuntu. Creo que es este archivo:
/etc/default/locale
Creo que son variables de entorno, pero no estoy del todo seguro de cómo las utilizan las aplicaciones, en todo caso.
Referencias
Respuesta3
Al menos en RedHat 6, tenga en cuenta que si se establece LC_ALL, la configuración de otras variables de entorno LC_* no tendrá ningún efecto, ya que LC_ALL tiene prioridad sobre todas las demás variables de entorno LC_*.
[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=
Respuesta4
En los sistemas Debian, se puede ejecutar dpkg-reconfigure locales
para configurar el idioma principal y hacer que otros estén disponibles; luego se puede ejecutar update-locale
para configurar la LANGUAGE
variable de entorno /etc/default/locale
para que tenga idiomas alternativos.