Locale (Español) - ArchWiki

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.

Related articles

- Environment variables
- Localization

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

- Locales - glibc wiki
- Gentoo:Localization/Guide
- Supposedly 2008, or earlier, Gentoo wiki article
- ICU's interactive collation testing
- Free Standards Group Open Internationalisation Initiative
- The POSIX definition of a locale
- Locale environment variables

Category:

- Localization (Español)

Hidden category:

- Pages or sections flagged with Template:Bad translation (Español)

Locale (Español)
Add topic