Jump to content

Locale (Español)

From ArchWiki
Esta traducción de Locale fue revisada el 2026-20-06. Si existen cambios puede actualizarla o avisar al equipo de traducción.

Los locales, mejor conocidos en español como configuraciones regionales, son utilizados por glibc y otros programas que los respetan, o por librerías cuyo propósito es renderizar texto, mostrar montos monetarios regionales correctamente, formatos de fecha y hora, cuestiones alfabéticas y otros estándares específicos de los locales.

Generando locales

Los nombres de los locales típicamente siguen la estructura de lenguaje[_territorio][.códigoCaracter][@modificador], siendo lenguaje un código de idioma de ISO 639, territorio un código de país de ISO 3166, y códigoCaracter es una codificación de caracteres o identificador de codificación, como ISO-8859-1 o UTF-8. Vea setlocale(3).

Para listar los locales habilitados, ejecute:

$ locale --all-locales

Para poder habilitar un locale en el sistema, primero debe generarse. Esto se puede lograr descomentando las entradas deseadas en /etc/locale.gen y ejecutando locale-gen. Del mismo modo, si se comentan entradas, se deshabilitan esas configuraciones. Al hacer cambios, considere cualquier configuración que pueda ser requerida por otros usuarios del sistema, así como también #Variables específicas.

La traducción de este artículo o sección no refleja el texto original.

Motivos: (N. de T.) En la versión original se le instruye al lector cómo generar un locale para el inglés. Considero que, en la mayoría de los casos, quien lea este artículo querrá configurar su sistema en español. (Discusión en Talk:Locale (Español)#)

Por ejemplo, para el español, descomente es_ES.UTF-8 UTF-8 (así como también en_US.UTF-8 UTF-8, ya que es usualmente utilizado como alternativa por varias herramientas):

/etc/locale.gen
...
#de_CH ISO-8859-1  
es_ES.UTF-8 UTF-8
#de_DE ISO-8859-1  
...
#en_SG ISO-8859-1
en_US.UTF-8 UTF-8
#en_US ISO-8859-1
...

Guarde el archivo y genere la configuración:

# locale-gen
Note
  • locale-gen se ejecuta también tras cada actualización de glibc. [1]
  • Se recomienda UTF-8 sobre otros conjuntos de caracteres. [2]

Estableciendo el locale

Para ver el locale actual junto a sus variables de entorno relacionadas, escriba:

$ locale

El locale a utilizarse de entre los generados con anterioridad se define en archivos locale.conf. Cada uno de estos debe contener una lista de variables de entorno separadas por saltos de línea, respetando el formato utilizado por locale.

Para listar los locales disponibles generados previamente, ejecute:

$ localedef --list-archive

O, alternativamente, use localectl(1):

$ localectl list-locales

Estableciendo el locale del sistema

Para establecer el locale del sistema, escriba la variable LANG en /etc/locale.conf, donde es_ES.UTF-8 corresponde a la primer columna de alguna entrada descomentada en /etc/locale.gen:

/etc/locale.conf
LANG=es_ES.UTF-8

O, como alternativa, ejecute:

# localectl set-locale LANG=es_ES.UTF-8

Vea #Variables y locale.conf(5) para más detalles.

Sobreescribir el locale del sistema por usuario

Se puede sobreescribir el locale del sistema en cada sesión de usuario al crear o editar $XDG_CONFIG_HOME/locale.conf (por lo general, ~/.config/locale.conf).

El orden de presedencia de estos archivos locale.conf se encuentra definido en /etc/profile.d/locale.sh.

Tip
  • Esto también permite conservar los logs en /var/log/ en inglés y utilizar otro lenguaje en el entorno de usuario.
  • Se puede crear un archivo /etc/skel/.config/locale.conf para que a los usuarios añadidos al sistema con el comando useradd y la opción -m se les genere automáticamente un archivo ~/.config/locale.conf. Vea Users and groups#Changing user defaults.

Hacer inmediatos los cambios de configuración regional

Luego de crear o modificar los archivos locale.conf de sistema y usuario, sus nuevos valores surtirán efecto al iniciar una nueva sesión. Para aplicar los nuevos valores al entorno actual, desconfigure LANG y cargue /etc/profile.d/locale.sh:

$ unset LANG
$ source /etc/profile.d/locale.sh
Note Si no se desconfigura la variable LANG primero, locale.sh no actualizará los valores definidos en locale.conf. Únicamente se actualizarán las variables nuevas o modificadas; las que se hayan eliminado de locale.conf permanecerán en la sesión.

Otros usos

Las variables regionales también pueden ser definidas con los métodos estándares definidos en Variables de entorno.

Por ejemplo, para probar o debuggear un programa particular durante su desarrollo, se puede iniciar con un comando como:

$ LC_ALL=C.UTF-8 ./my_application.sh

De manera similar, para establecer un locale para todos los procesos que se ejecuten en la consola actual (por ejemplo, durante la instalación del sistema), use:

$ export LC_ALL=C.UTF-8

Variables

Los archivos locale.conf suportan las siguientes variables de entorno:

  • LANG
  • LANGUAGE
  • LC_ADDRESS
  • LC_COLLATE
  • LC_CTYPE
  • LC_IDENTIFICATION
  • LC_MEASUREMENT
  • LC_MESSAGES
  • LC_MONETARY
  • LC_NAME
  • LC_NUMERIC
  • LC_PAPER
  • LC_TELEPHONE
  • LC_TIME

El significado completo de las variables LC_* aquí listadas se puede encontrar en la página man locale(7), y los detalles de su definición se describen en locale(5).

Note Los programas siguen el orden de prioridad al buscar valores que dependan de la configuración regional.

LANG: locale por defecto

El locale establecido en esta variable será utilizado para todas las demás variables LC_* que no se definan explícitamente.

Tip Asuma que es un usuario hispanohablante en los Estados Unidos y desea que sus programas manejen números y fechas de acuerdo a las convenciones estadounidenses, conservando los mensajes en español. En ese caso, podría establecer la variable LANG como en_US.UTF-8 y la variable LC_MESSAGES (traducción de mensajes de interfaz de usuario) como es_ES.UTF-8.

LANGUAGE: locales de respaldo

Los programas que usan gettext para sus traducciones respetan, además de las variables usuales, la opción LANGUAGE. Esto permite a los usuarios especificar una lista de locales que se utilizarán según el orden de la misma. Si una traducción para el locale preferido no está disponible, en lugar de recurrir al texto por defecto, se utilizará la traducción de una configuración regional similar. Por ejemplo, puede que un usuario inglés prefiera recurrir al inglés británico en lugar del americano:

locale.conf
LANG=en_AU.UTF-8
LANGUAGE=en_AU:en_GB:en
Note Muchas aplicaciones no nombran o apodan su locale inglés como en o en_US, pero utilizan, en cambio, el locale por defecto: C. Si se coloca un locale que no sea inglés en LANGUAGE luego de uno inglés, por ejemplo LANGUAGE=en_US:en:es_ES, puede que algunas aplicaciones opten por el locale secundario a pesar de que el texto inglés esté disponible.[3] La solución es incluir siempre el locale C luego del inglés: LANGUAGE=en_US:en:C:es_ES.

LC_TIME: formato de fecha y hora

Si se establece LC_TIME como, por ejemplo, es_ES.UTF-8, el formato de fecha será "DD/MM/YYYY". Si se desea usar el formato ISO 8601, que es "YYYY-MM-DD", una opción es:

locale.conf
LC_TIME=en_DK.UTF-8

Puede imprimir la fecha y hora actual con su locale preferido usando date +"%c".

En el caso de usuarios que utilicen en_US.UTF-8, glibc 2.29 corrigió un error, y empezó a mostrarlo con un formato de 12 horas, como siempre debió ser. Si se desea utilizar un formato de 24 horas, use LC_TIME=C.UTF-8.

Note Los programas no necesariamente respetarán esta variable para dar formato a las fechas.

LC_COLLATE: colación

Esta variable regula las reglas de colación utilizadas para ordenamiento y expresiones regulares.

Establecer su valor como C.UTF-8 puede hacer que, por ejemplo, el comando ls ordene los dotfiles primero, seguidos de nombres de archivo en mayúsculas y minúsculas:

locale.conf
LC_COLLATE=C.UTF-8

Vea también [4].

LC_ALL: solución de problemas

El locale que se establezca en esta variable siempre sobreescribirá LANG y todas las demás variables LC_*, sin importar si están configuradas o no. Si LC_ALL se establece como C o C.UTF-8, sobreescribirá también LANGUAGE.

LC_ALL es la única variable LC_* que no se puede configurar en archivos locale.conf: su propósito es únicamente el de testeo o solución de problemas, estableciéndola por ejemplo en /etc/profile.

Solución de problemas

Para problemas de codificación, revise Character encoding#Troubleshooting.

Mi sistema aún está usando el idioma incorrecto

Es posible que las variables de entorno se encuentren redefinidas en otros archivos además de locale.conf. Vea Environment variables#Cómo definir variables para más detalles.

Si está usando un entorno de escritorio, como puede ser GNOME, es posible que su configuración de idioma tome presedencia sobre lo definido en locale.conf.

KDE Plasma también permite cambiar el idioma de la interfaz de usuario mediante los ajustes del sistema. Si el entorno de escritorio sigue usando el idioma por defecto luego de haberlo modificado, eliminar el archivo ~/.config/plasma-localerc (anteriormente: ~/.config/plasma-locale-settings.sh) debería resolver el problema.

Si está utilizando un gestor de inicio de sesión junto a accountsservice, siga las instrucciones en Display manager#Establecer el idioma para la sesión de usuario.

LightDM usará accountsservice automáticamente para configurar el locale del usuario, si es que está instalado. Caso contrario, LightDM almacena la configuración de la sesión de usuario en ~/.dmrc. Es posible también que se esté leyendo alguna configuración desde allí.

Usar un locale personalizado ocasiona problemas

Al instalar un locale que no sea soportado oficialmente (por ejemplo, locale-en_xxAUR), pueden surgir algunos problemas, como ser que las teclas de composición no funcionen en algunas aplicaciones, o que las aplicaciones reporten locales faltantes. Tras instalar un locale personalizado, será requerido intervenir manualmente para resolver estos problemas. Hay dos maneras (reemplace en_XX.UTF-8 con el identificador de su locale personalizado):

Configure LC_CTYPE

Configure LC_CTYPE con un locale que sea soportado oficialmente (como en_US.UTF-8), por ejemplo:

/etc/locale.conf
LANG=en_XX.UTF-8
LC_CTYPE=en_US.UTF-8

Modifique la base de datos de Xlib

Modifique la base de datos de Xlib añadiendo lo siguiente:

/usr/share/X11/locale/locale.dir
en_US.UTF-8/XLC_LOCALE en_XX.UTF-8
en_US.UTF-8/XLC_LOCALE: en_XX.UTF-8
/usr/share/X11/locale/compose.dir
en_US.UTF-8/Compose en_XX.UTF-8
en_US.UTF-8/Compose: en_XX.UTF-8

Usar el sistema métrico con un locale inglés

En algunas herramientas, el sistema de unidades se elige de acuerdo a los ajustes de locale; por lo tanto, las temperaturas se mostrarán en Fahrenheit si se utilizan locales ingleses. Si prefiere usar el sistema métrico con un locale inglés, añadir LC_MEASUREMENT=C.UTF-8 (o cualquier otro locale para el que locale -ck LC_MEASUREMENT devuelva measurement=1) a /etc/locale.conf debería funcionar si es que la herramienta revisa también LC_MEASUREMENT en lugar de solamente fijarse en el país. [5]

Vea también