Esta pregunta fue estimulada por la pregunta
El navegador Chromium no permite configurar el tamaño de papel predeterminado para "Imprimir en archivo", y también por una conversación con @Gilles en el chat. Como lo señaló @don_crissti, y como lo verifiqué yo, cambiar la configuración regional (al menos LC_PAPER
) hace una diferencia en el tamaño de papel seleccionado.
Nunca había pensado mucho en qué seleccionar, y siempre había optado por en_US.UTF-8
porque parecía una opción predeterminada razonable.
Sin embargo, según @Gilles en el chat (consulte la conversación que comienza en http://chat.stackexchange.com/transcript/message/17017095#17017095). Extractos:
Gilles:LC_PAPER por defecto es $LANG
Gilles:Debes tener LANG=en_US.UTF-8. Esa es una mala idea:establece
LC_COLLATE y eso casi siempre es algo malo
Gilles:LC_COLLATE no describe la intercalación correcta, es demasiado
restrictivo (va carácter por carácter) elimine LANG y en su lugar
establezca LC_CTYPE y LC_PAPER
Gilles:más LC_MESSAGES si desea mensajes en un idioma que no sea
inglés
Claramente, hay problemas aquí de los que no estoy al tanto, y estoy seguro de que muchos otros también lo están. Entonces, ¿qué aspectos debe tener en cuenta al configurar locales y cómo debe configurarlos? Siempre he ejecutado dpkg-reconfigure locales
en Debian, y no lo pensé dos veces.
Pregunta específica:¿Debo establecer mi configuración regional en en_IN.UTF-8? ¿Hay algún inconveniente en hacerlo?
Respuesta aceptada:
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 antiguas), los nombres de configuración regional siguen el mismo patrón:
- Un código de idioma de dos letras en minúscula ISO 639-1 o un código de idioma de tres letras ISO 639-2 si el idioma no tiene un código de dos letras. Por ejemplo,
en
para inglés,de
para alemán,ja
para japonés,uk
para ucraniano,ber
para 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,en_UK
para inglés británico,fr_CA
Francés canadiense (Québec),de_DE
para alemán de Alemania,de_AT
para alemán de Austria,ja_JP
para japonés (de Japón), etc. - Opcionalmente, un punto
.
seguido del nombre de una codificación de caracteres comoUTF-8
,ISO-8859-1
,KOI8-U
,GB2312
,Big5
, etc. Con GNU libc al menos (no sé qué tan extendido está esto), el caso y la puntuación se ignoran en la codificación de nombres. Por ejemplo,zh_CN.UTF-8
es chino mandarín (simplificado) codificado en UTF-8, mientras quezh_CN
es chino mandarín codificado en GB2312 yzh_TW
es chino taiwanés (tradicional) codificado en Big5. - Opcionalmente, un signo de arroba
@
seguido del nombre de una variante. El significado de las variantes depende de la configuración regional. Por ejemplo, muchos países europeos tienen un@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) utiliza la codificación latin1 (ISO 8859-1) y £ como símbolo de moneda, mientras que[email protected]
utiliza la codificación latin9 (ISO 8859-15) y € como símbolo de moneda.
Además, hay dos nombres de configuración regional que existen en todos los sistemas similares a Unix:C
y POSIX
. Estos nombres son sinónimos y significan informático, es decir, configuraciones predeterminadas que son apropiadas para los datos analizados por un programa informático.
Configuración regional
Las siguientes categorías de configuración regional están definidas por POSIX:
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 normalmente prestan atención aLC_CTYPE
para determinar los límites de los caracteres.LC_COLLATE
:orden de colación (es decir, clasificación). Esta configuración tiene un uso muy limitado por varias razones:- La mayoría de los idiomas tienen reglas complejas que dependen de lo que se ordena (por ejemplo, las palabras del diccionario y los nombres propios pueden no usar el mismo orden) y no se pueden expresar mediante
LC_COLLATE
. - Existen pocas aplicaciones en las que el orden de clasificación adecuado es importante y se realizan mediante un software que utiliza la configuración local. Por ejemplo, los procesadores de texto almacenan el idioma y la codificación de un archivo en el propio archivo (de lo contrario, el archivo no se procesaría correctamente en un sistema con una configuración regional diferente) y no se preocupan por la configuración regional especificada por el entorno.
LC_COLLATE
puede tener efectos secundarios desagradables, en particular porque provoca el orden de clasificación A [A-Z] romper algunas aplicaciones.
- La mayoría de los idiomas tienen reglas complejas que dependen de lo que se ordena (por ejemplo, las palabras del diccionario y los nombres propios pueden no usar el mismo orden) y no se pueden expresar mediante
LC_MESSAGES
:el idioma de los mensajes informativos y de error.LC_NUMERIC
:formato de números:decimal y separador de miles.
Muchas aplicaciones codifican.
como separador decimal. Esto hace queLC_NUMERIC
no muy útil y potencialmente peligroso:- Incluso si lo configura, seguirá viendo el formato predeterminado con bastante frecuencia.
- Es probable que se encuentre en una situación en la que una aplicación produce resultados dependientes de la configuración regional y otra aplicación espera
.
ser el punto decimal, o,
para ser un separador de campos.
LC_MONETARY
:comoLC_NUMERIC
, pero para montos en moneda local.
Muy pocas aplicaciones usan esto.LC_TIME
:formato de fecha y hora:nombres de días de la semana y meses, reloj de 12 o 24 horas, orden de las partes de la fecha, puntuación, etc.
GNU libc, que encontrará en Linux no integrado, define categorías de configuración regional adicionales:
LC_PAPER
:el tamaño de papel predeterminado (definido por alto y ancho).LC_NAME
,LC_ADDRESS
,LC_TELEPHONE
,LC_MEASUREMENT
,LC_IDENTIFICATION
:No conozco ninguna aplicación que los use.
Variables de entorno
Las aplicaciones que utilizan configuraciones locales las determinan a partir de variables de entorno.
- Entonces el valor del
LANG
La variable de entorno se utiliza a menos que se anule con otra configuración. SiLANG
no está configurado, la configuración regional predeterminada esC
. - El
LC_xxx
los nombres se pueden usar como variables de entorno. - Si
LC_ALL
está establecido, todos los demás valores se ignoran; esto es principalmente útil para configurarLC_ALL=C
ejecutar aplicaciones que necesitan producir el mismo resultado independientemente de dónde se ejecuten. - Además, GNU libc usa
LANGUAGE
para definir alternativas paraLC_MESSAGES
(por ejemplo,LANGUAGE=fr_BE:fr_FR:en
para preferir el francés belga, o si no está disponible el francés francés, o si no está disponible el inglés).
Instalación de locales
Los datos locales pueden ser grandes, por lo que algunas distribuciones no los envían en una forma utilizable y, en su lugar, requieren un paso de instalación adicional.
- En Debian, para instalar locales, ejecute
dpkg-reconfigure locales
y seleccione de la lista en el cuadro de diálogo, o edite/etc/locale.gen
y luego ejecutelocale-gen
. - En Ubuntu, para instalar locales, ejecute
locale-gen
con los nombres de los locales como argumentos.
Puede definir su propia configuración regional.
Recomendación
Las configuraciones útiles son:
- Establecer
LC_CTYPE
al idioma y la codificación en los que codifica sus archivos de texto. Asegúrese de que sus terminales utilicen esa codificación.
Para la mayoría de los idiomas, solo importa la codificación. Hay algunas excepciones; por ejemplo, unai
mayúscula esI
en la mayoría de los idiomas exceptoİ
en turco (tr_TR
). - Establecer
LC_MESSAGES
al idioma en el que desea ver los mensajes. - Establecer
LC_PAPER
aen_US
si desea que US Letter sea el tamaño de papel predeterminado y cualquier otra cosa (por ejemplo,en_GB
) si desea A4. - Opcionalmente, establezca
LC_TIME
a su formato de hora favorito.
Como se explicó anteriormente, evite configurar LC_COLLATE
y LC_NUMERIC
. Si usa LANG
, invalide explícitamente estas dos categorías configurándolas en C
.