La configuración regional son las preferencias del usuario que se relacionan con su cultura.
Nombres locales
En todas las variantes actuales de Unix que conozco (pero no en algunas antigüedades), los nombres locales siguen el mismo patrón:
- Un código de idioma de dos letras minúsculas ISO 639-1 , o un código de idioma de tres letras ISO 639-2 si el idioma no tiene código de dos letras. Por ejemplo,
en
para inglés, de
alemán, ja
japonés, uk
ucraniano, ber
bereber, ...
- Para muchos pero no todos los idiomas, un guión bajo
_
seguido de un código de país de dos letras en mayúsculas ISO 3166 . Así: en_US
para inglés estadounidense, inglés en_UK
británico, francés fr_CA
canadiense (Québec), de_DE
alemán de Alemania, de_AT
alemán de Austria, ja_JP
japonés (de Japón), etc.
- Opcionalmente, un punto
.
seguido por el nombre de una codificación de caracteres tales como UTF-8
, ISO-8859-1
, KOI8-U
, GB2312
, Big5
, etc, con GNU libc al menos (no sé cómo esto es generalizada), la caja y puntuacion es ignorado en la codificación de nombres. Por ejemplo, el zh_CN.UTF-8
chino mandarín (simplificado) está codificado en UTF-8, mientras zh_CN
que el chino mandarín está codificado en GB2312 y el zh_TW
chino taiwanés (tradicional) está codificado en Big5.
- Opcionalmente, un signo at
@
seguido del nombre de una variante. El significado de las variantes depende de la configuración regional. Por ejemplo, muchos países europeos tienen una @euro
variante de configuración regional donde el signo de moneda es € y donde la codificación es una que incluye este carácter (ISO 8859-15 o ISO 8859-16), a diferencia de la variante sin adornos con el signo de moneda más antiguo. Por ejemplo, en_IE
(inglés, Irlanda) usa la codificación latin1 (ISO 8859-1) y £ como el símbolo de la moneda, mientras que en_IE@euro
usa la codificación latin9 (ISO 8859-15) y € como el símbolo de la moneda.
Además, hay dos nombres locales que existen en todos los sistemas tipo Unix: C
y POSIX
. Estos nombres son sinónimos y significan computación, es decir, configuraciones predeterminadas que son apropiadas para los datos analizados por un programa de computadora.
Configuraciones locales
POSIX define las siguientes categorías locales :
LC_CTYPE
: el conjunto de caracteres utilizado por las aplicaciones de terminal: datos de clasificación (qué caracteres son letras, puntuación, espacios, inválidos, etc.) y conversión de mayúsculas y minúsculas. Las utilidades de texto suelen prestar atención LC_CTYPE
para determinar los límites de los caracteres.
LC_COLLATE
: orden de clasificación (es decir, clasificación). Esta configuración es de uso muy limitado por varias razones:
- La mayoría de los idiomas tienen reglas complejas que dependen de lo que se está ordenando (por ejemplo, las palabras del diccionario y los nombres propios pueden no usar el mismo orden) y no se pueden expresar por
LC_COLLATE
.
- Existen pocas aplicaciones en las que el orden de clasificación adecuado es realizado por un software que utiliza la configuración regional. Por ejemplo, los procesadores de texto almacenan el idioma y la codificación de un archivo en el archivo mismo (de lo contrario, el archivo no se procesaría correctamente en un sistema con configuraciones locales diferentes) y no les importan las configuraciones locales especificadas por el entorno.
LC_COLLATE
puede tener efectos secundarios desagradables, en particular porque causa el orden de clasificación A <a <B <..., que hace que "entre A y Z" incluya las letras minúsculas de a a y. En particular, las expresiones regulares muy comunes como [A-Z]
romper algunas aplicaciones .
LC_MESSAGES
: el lenguaje de los mensajes informativos y de error.
LC_NUMERIC
: formato de número: separador decimal y de miles.
Muchas aplicaciones codifican .
como separador decimal. Esto hace que LC_NUMERIC
no sea muy útil y potencialmente peligroso:
- Incluso si lo configura, verá el formato predeterminado con bastante frecuencia.
- Es probable que se encuentre en una situación en la que una aplicación produce una salida dependiente de la configuración regional y otra aplicación espera
.
ser el punto decimal o ,
un separador de campo.
LC_MONETARY
: como LC_NUMERIC
, pero para cantidades de moneda local.
Muy pocas aplicaciones usan esto.
LC_TIME
: formato de fecha y hora: nombres de semana y mes, reloj de 12 o 24 horas, orden de partes de fecha, puntuación, etc.
GNU libc, que encontrarás en Linux no incrustado, define categorías locales adicionales:
LC_PAPER
: el tamaño de papel predeterminado (definido por la altura y el ancho).
LC_NAME
, LC_ADDRESS
, LC_TELEPHONE
, LC_MEASUREMENT
, LC_IDENTIFICATION
: No sé de cualquier aplicación que utiliza éstos.
Variables de entorno
Las aplicaciones que usan la configuración regional los determinan a partir de variables de entorno.
- Luego,
LANG
se utiliza el valor de la variable de entorno a menos que sea anulado por otra configuración. Si LANG
no está configurado, la configuración regional predeterminada es C
.
- Los
LC_xxx
nombres se pueden usar como variables de entorno.
- Si
LC_ALL
se establece, todos los demás valores se ignoran; Esto es principalmente útil para configurar LC_ALL=C
aplicaciones de ejecución que necesitan producir la misma salida independientemente de dónde se ejecuten.
- Además, GNU libc utiliza
LANGUAGE
para definir retrocesos para LC_MESSAGES
(por ejemplo, LANGUAGE=fr_BE:fr_FR:en
para preferir francés belga, o si no está disponible francés francés, o si no está disponible inglés).
Instalar locales
Los datos locales pueden ser grandes, por lo que algunas distribuciones no los envían de forma utilizable y, en cambio, requieren un paso de instalación adicional.
- En Debian, para instalar configuraciones regionales, ejecute
dpkg-reconfigure locales
y seleccione de la lista en el cuadro de diálogo, o edite /etc/locale.gen
y luego ejecute locale-gen
.
- En Ubuntu, para instalar configuraciones regionales, ejecute
locale-gen
con los nombres de las configuraciones regionales como argumentos.
Puede definir su propio entorno local .
Recomendación
Las configuraciones útiles son:
- Establezca
LC_CTYPE
el idioma y la codificación en los que codifica sus archivos de texto. Asegúrese de que sus terminales usen esa codificación.
Para la mayoría de los idiomas, solo importa la codificación. Hay algunas excepciones; por ejemplo, una mayúscula i
está I
en la mayoría de los idiomas pero İ
en turco ( tr_TR
).
- Establezca
LC_MESSAGES
el idioma en el que desea ver los mensajes.
- Establecer
LC_PAPER
a en_US
si desea carta de los EEUU para ser el tamaño de papel predeterminado y casi cualquier otra cosa (por ejemplo en_GB
) si desea A4.
- Opcionalmente, configure
LC_TIME
su formato de hora favorito.
Como se explicó anteriormente, evite configurar LC_COLLATE
y LC_NUMERIC
. Si usa LANG
, anule explícitamente estas dos categorías configurándolas en C
.
LC_PAPER
. ¿Y puedo actualizar esto en todo el sistema sin reiniciar?