Información de contexto
Probé la solución en Fedora 21 con GNOME Shell 3.14.4, pero creo que también se puede aplicar a otras versiones.
Lo primero que hay que entender es que el entorno de escritorio GNOME anula las definiciones locales de todo el sistema y, por lo tanto, no se ve afectado por ellas /etc/locale.conf
. Además, puede haber aplicaciones que tengan su propia configuración regional y no utilicen el sistema o la configuración de GNOME. En esta guía, describiré una forma de personalizar la configuración regional según sus necesidades y GNOME, y el sistema será coherente desde la perspectiva de la configuración regional.
Comprobación del estado del entorno local actual
Configuraciones de todo el sistema
De la Guía del administrador del sistema Fedora 21 :
La configuración regional de todo el sistema se almacena en el /etc/locale.conf
archivo, que se lee en el inicio temprano por el demonio systemd . La configuración regional establecida en /etc/locale.conf
es heredada por cada servicio o usuario, a menos que los programas individuales o usuarios individuales los anulen.
Para ver el estado local actual, podemos ejecutar:
$ localectl status
System Locale: LANG=en_US.UTF-8
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_US.UTF-8
LC_MONETARY=en_US.UTF-8
LC_PAPER=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
VC Keymap: us
X11 Layout: us
Configuraciones de GNOME
$ gsettings get org.gnome.system.locale region
'en_US.UTF-8'
GNOME tiene solo una configuración. Al echar un vistazo rápido al código fuente de gnome-control-center , parece que cuando set_localed_locale()
se llama a la función, establece todas las categorías siguientes (LC_TIME, LC_NUMERIC, LC_MONETARY, LC_MEASUREMENT, LC_PAPER) en la misma configuración regional definida en org.gnome.system.locale region
.
Mezclar diferentes configuraciones locales parece imposible sin crear una configuración regional personalizada, pero afortunadamente no es una tarea muy compleja.
Crear configuración regional personalizada
Creo que la forma más fácil de explicar es con un ejemplo. En mi caso particular yo quería tener una configuración regional personalizada, basada principalmente en hebreo ( he_IL ) pero con LC_NAME, LC_MESSAGES de en_US y LC_TIME (con modificaciones first_weekday
y first_workday
) de en_GB .
Agarrando archivos de definición de configuración regional
Debería tener una idea de los entornos locales que desea mezclar. Primero necesitamos localizar los archivos de definición relacionados, que se pueden encontrar en /usr/share/i18n/locales/
. Volver a mi ejemplo, que necesitaba la siguiente: he_IL , es_ES y es_ES . Configuré una carpeta de trabajo en mi casa y copié los archivos necesarios en ella:
$ cd /usr/share/i18n/locales
$ mkdir -v ~/custom-locale ; cp -v he_IL en_US en_GB ~/custom-locale/
Crear un nuevo archivo de definición
Decidí llamar a mi locale hc_IL y tomé he_IL como base. Las siguientes líneas crean un nuevo archivo hc_IL
con el contenido de he_IL
y en el camino reemplazan todas las ocurrencias de una cadena he_IL dentro del archivo con hc_IL .
$ cd ~/custom-locale/
$ sed 's/he_IL/hc_IL/g' he_IL > hc_IL
Modificar el nuevo archivo de definición
Ahora podemos personalizar la nueva configuración regional según nuestras necesidades. Abra el archivo recién creado ~/custom-locale/hc_IL
con su editor de texto favorito. Uso vim (tiene el resaltado de sintaxis adecuado para los archivos de definición de configuración regional):
$ vim ~/custom-locale/hc_IL
Para aquellos que aún no han elegido su editor favorito y vim no es su taza de té, pueden usar gedit :)
$ gedit ~/custom-locale/hc_IL
La estructura del archivo no es muy complicada. Esencialmente, se construye a partir de secciones. Desde las páginas man de locale (5) :
La definición de configuración regional tiene una parte para cada categoría de configuración regional. Cada parte se puede copiar desde otro entorno local existente o se puede definir desde cero. Si se debe copiar la categoría, la única palabra clave válida en la definición es copiar seguida del nombre de la configuración regional que se debe copiar.
La noción de copia es muy útil. Ahorra tiempo y el archivo resultante es claro y conciso. Por ejemplo, en lugar de copiar secciones enteras, puede tener:
LC_MESSAGES
copy "en_US"
END LC_MESSAGES
Se puede acceder a la documentación completa en un archivo de definición de configuración regional a través de:
$ man 5 locale
Sin embargo, si solo desea crear una configuración regional personalizada, que es una combinación de las existentes, no es necesario comprender cada detalle.
En mi caso modifiqué las siguientes categorías y palabras clave:
IDENTIFICACIÓN_CL
title "Custom Hebrew locale"
source "mydomain.ws"
address "http:////www.mydomain.ws"
contact ""
email "admin@mydomain.ws"
tel ""
fax ""
language "Hebrew"
territory "Israel"
revision "1.0"
date "2015-04-21"
Nota: Todas las líneas de " categoría .. " en la sección LC_IDENTIFICATION han sido modificadas durante la creación del archivo usando sed
. Entonces ya no necesitamos tocarlos.
LC_TIME
Copié la sección completa de en_GB y modifiqué solo las líneas que indican el primer día de la semana y el primer día de trabajo:
first_weekday 1
first_workday 1
El resto de las categorías las dejé tal como están o reemplacé su contenido con la directiva de copia como en:
LC_NAME
copy "en_US"
END LC_NAME
Eso es todo, el archivo de definición está listo. No olvides guardar el archivo :)
Compilar y copiar la nueva configuración regional
La compilación de la nueva configuración regional se realiza utilizando el siguiente comando como root o sudo . Reemplace hc_IL
con su localidad:
$ sudo localedef -c -v -i hc_IL -f UTF-8 hc_IL.UTF-8
Si la compilación es exitosa, los datos locales compilados se agregan al archivo de almacenamiento /usr/lib/locale/locale-archive
.
Copie el nuevo archivo de definición de configuración regional en el directorio de definiciones de configuración regional. Reemplace hc_IL
con su localidad:
$ sudo cp -v hc_IL /usr/share/i18n/locales/
Activando la nueva configuración regional
En este paso, queremos configurar el sistema y GNOME para usar la nueva configuración regional.
Configuraciones de todo el sistema
Edite el /etc/locale.conf
archivo como raíz y configure cada línea que comience con LC_
su nueva configuración regional. Por ejemplo:
LANG=en_US.UTF-8
LC_NUMERIC=hc_IL.utf8
LC_TIME=hc_IL.utf8
LC_MONETARY=hc_IL.utf8
LC_PAPER=hc_IL.utf8
LC_MEASUREMENT=hc_IL.utf8
Configuraciones de GNOME
Para activar la nueva configuración regional en GNOME, ejecute el siguiente comando. Reemplace hc_IL
con su localidad:
$ gsettings set org.gnome.system.locale region "hc_IL.utf8"
Validar la nueva configuración
El último paso es validar que todo funciona como se esperaba. Para volver a cargar todas las configuraciones, lo más fácil para mí fue reiniciar.
- Consulte la sección "Verificación del estado del entorno local actual" para verificar que la configuración del sistema sea correcta.
Use GNOME Shell y las aplicaciones dependientes de la configuración regional (gráfica y consola) y verifique que se comporten como se espera con la nueva configuración regional. Por ejemplo, si personalizó LC_TIME, puede ejecutar el date
comando para validar el formato de fecha:
$ date +%x
21/04/15
Nota: Todo fue probado en Fedora 21 con GNOME 3.14. Otras distribuciones de Linux pueden requerir pasos adicionales o diferentes.
Comente si encuentra algún problema con las instrucciones.