2.4.2. Configuración local¶
En la configuración local del sistema podemos distinguir dos aspectos independientes:
La configuración del idioma, esto es, la lengua con la que preferimos que el sistema y las aplicaciones se comuniquen con nosotros. De este modo, si una aplicación tiene disponible la traducción para la lengua preferida, usará esta traducción y la lengua por defecto (habitualmente el inglés).
La disposición de las teclas del teclado. Obviando lenguas exóticas y ciñéndonos a teclatos QWERTY, fuera de las teclas que usa el alfabeto inglés, la disposición del resto de teclas depende mucho de la lengua en la que habitualmente quiera escribir el usuario. Por ejemplo, una persona que escriba en castellano necesitará una tecla para poder escribir una tecla «Ñ», mientras que en Portugal este carácter es irrelevante. En cambio, un portugués requerirá acentuar vocales con la virgulilla («pǎo»), mientras que en castellano esto es absolutamente irrelevante. Por lo general, dado que el teclado es un elemento físico, es más común que la disposición haga referencia al país que a la propia lengua. Así, más que teclado español lo que hay es teclado de España, ya que, puesto que se comercializa en España, se busca que también sirva para escribir en otras lenguas españolas como el catalán.
Además de lo anterior, puede haber también diferencia en el número de teclas que tenga el teclado. Lo habitual en los teclados de escritorio es que tengan 105 teclas.
Hay, pues, relación entre teclado e idioma preferido (el usuario que utilice un idioma, habitualmente tendrá una determinada disposición de teclado), pero esta no tiene por qué ser obligatoria, razón por la cual ambas configuración se llevan a cabo por separado. Trataremos bajo este epígrafe la herramienta que se usa tras la adopción de systemd, que es la preferible puesto que es universal (o al menos común a todas las distribuciones que usan systemd), y después explicaremos cuál es el modo en el que Debian ha permitido hacer esta configuración y que, a día de hoy (Buster), sigue siendo válido.
2.4.2.1. Configuración local con systemd¶
Nota
Este epígrafe no entra en detalles de lo que subyace bajo la configuración y se limita a exponer la abstracción que nos presenta localectl para configurar teclado e idioma. Es recomendable que, si quiere profundizar, lea los epígrafes posteriores.
localectl integra la configuración del idioma y del teclado:
$ localectl status
System Locale: LANG=es_ES.UTF-8
VC Keymap: n/a
X11 Layout: es
X11 Model: pc105
X11 Options: terminate:ctrl_alt_bksp
De donde se extrae:
La primera línea indica cuál es el idioma predetermina: español de España codificado en UTF-8.
La segunda línea refiere la configuración del teclado para las consolas virtuales, esto es, para las terminales intependientes del entorno gráfico[1]. Al no estar definido, utilizará la misma que para las X.
El resto de líneas definen el teclado para el entorno gráfico: teclado para España de 105 teclas y con la posibilidad de terminar las X con la combinación Ctrl+Alt+Backspace.
Si utilizamos la orden para modificar alguno de estos aspectos, se alterará la configuración predeterminada para todos los usuarios, lo cual significa que:
La configuración activa no cambiará, por lo que deberemos o cambiarla manialmente en la sesión actual (consulte los posteriores epigrafes) o reinicar el sistema.
Los usuarios pueden tener una configturación particular que sobrescriba esta configuración predeterminada.
Para cambiar el idioma debemos utilizar:
$ localectl set-locale IDIOMA
o incluso podemos dar una lista de idiomas por orden de preferencia:
$ localectl set-locale IDIOMA1,IDIOMA2
Para saber los idiomas disponibles en el sistema, basta con listarlos:
$ localectl list-locales
C.UTF-8
es_ES.UTF-8
Pueden generarse otros idiomas, pero no a través de esta herramienta.
Por su parte, para configurar el teclado podemos usar el subcomando set-keymap o set-x11-keymap. La diferencia entre ambos es que el primero también afecta a la configuración de teclado de la terminal de texto. Por ejemplo:
$ localectl set-x11-keymap es 105 "" "terminate:ctrl_alt_bksp"
escoge el teclado de España de 105 teclas, la variante predeterminada (qwerty) y habilita poder reiniciar el entorno gráfico con la combinación Ctrl+Alt+Retroceso[2]. Es posible averiguar la lista de teclados disponibles mediante diversos subcomandos. Éche un ojo a la página de manual de localectl.
Advertencia
Tenga presente que, si dentro de un entorno de escritorio usa la aplicación gráfica que éste tenga para configurar el teclado, no tendrá efecto alguna localectl, ya que la aplicación gráfica hará una configuración particular para el usuario que prevalece sobre la predeterminada que aquí pudiera hacerse.
2.4.2.2. Configuración de la lengua¶
La lengua con la que nos comunicamos con el sistema viene determinada por un conjunto de variables de ambiente, de modo que hacer que éste cambie de idioma consiste básicamente en saber cuáles son estas variables y qué valores debemos asignarles.
Además, hemos de tener en cuenta que usar una lengua u otra, no implica solamente la comunicación mediante mensajes, sino también aspectos como la ordenación alfabética, el formato de las fechas o el separador de decimales.
En linux, hay dos variables generales LANG y LC_ALL y una serie de variables que afectan a aspectos particulares del idioma:
Variables |
POSIX[3] |
Descripción |
---|---|---|
LC_ADDRESS |
No |
Formato para direcciones postales. |
LC_COLLATE |
Sí |
Ordenación alfabética |
LC_CTYPE |
Sí |
Qué caracteres son considerados letras, etc. |
LC_IDENTIFICATION |
No |
? |
LC_MEASUREMENT |
No |
Indica el sistema de medidas usado (métrico, etc) |
LC_MESSAGES |
Sí |
En qué lengua se comunicarán los programas con el usuario. |
LC_MONETARY |
Sí |
Formato para fomrato numérico de dinero. |
LC_NAME |
No |
Formato para nombres de personas? |
LC_NUMERIC |
Sí |
Formato numérico (separador de miles, decimales, etc.) |
LC_PAPER |
No |
Tamaño del papel. |
LC_TELEPHONE |
No |
Formato de los números telefónicos. |
LC_TIME |
Sí |
Formato de hora y fecha. |
El valor de estas variables se define como ll_DD.COD
, donde «ll» es el
código de dos caracteres de la lengua, «DD» el código de dos caracteres del
dialecto y «COD» la codificación. Por ejemplo: es_ES.UTF-8 significa
español de España en UTF-8, mientras que es_AR.UTF-8 es el español de
Argentina.
Existe, además, la variable LANGUAGE que tiene el mismo propósito de LC_MESSAGES, aunque permite indicar en una lista de valores separados por dos puntos la preferencia idiomática del usuario. Por ejemplo:
LANGUAGE="es_ES:es_AR:pt_PT:pt_BR:en_US:en_GB"
En esta lista no se especifican las codificaciones y, además, se puede indicar como valor una lengua sin dialecto, en cuyo caso se tomará el dialecto predeterminado (p.e. «es» equivale a «es_ES»):
LANGUAGE="es:es_AR:pt:pt_BR:en:en_GB"
La precedencia de estas variables es la siguiente:
Si LC_ALL se encuentra definida, sobrescribe el valor de cualquiera de las variables LC_*, tengan éstas un valor particular fijado o no, o lo tengan LANG o LANGUAGE.
Si LANGUAGE se impone sobre el valor de LC:MESSAGES y sobre el de LANG.
Si LANG se define, define el valor de cualquier variable LC_* que no haya sido expresamente definida.
Probemos esta precedencia usando la orden:
- locale
Devuelve información sobre el sistema de localización. Su uso más simple es preguntar cuál es el lenguaje que hay definido en la shell:
$ locale LANG=es_ES.UTF-8 LANGUAGE= LC_CTYPE="es_ES.UTF-8" LC_NUMERIC="es_ES.UTF-8" LC_TIME="es_ES.UTF-8" LC_COLLATE="es_ES.UTF-8" LC_MONETARY="es_ES.UTF-8" LC_MESSAGES="es_ES.UTF-8" LC_PAPER="es_ES.UTF-8" LC_NAME="es_ES.UTF-8" LC_ADDRESS="es_ES.UTF-8" LC_TELEPHONE="es_ES.UTF-8" LC_MEASUREMENT="es_ES.UTF-8" LC_IDENTIFICATION="es_ES.UTF-8" LC_ALL=
O sea, español de España (es_ES) codificado en UTF-8. La razón de que esto sea así es que hay definida solamente la variable LANG:
$ echo $LANG es_ES.UTF-8
y ninguna de las otras, por lo que todas las variables que controlan aspectos particulares adoptan su valor.
Para saber qué otros valores podemos asignar, basta con:
$ locale -a C C.UTF-8 es_ES.utf8 POSIX
Los valores C y POSIX indican que la aplicación use el idioma que tiene definido por defecto (usualmente inglés de Estados Unidos). Comprobemos ahora qué las variables determinan su valor (y por tanto, el idioma) según las reglas que dimos antes:
$ LC_MESSAGES=C locale LANG=es_ES.UTF-8 LANGUAGE= LC_CTYPE="es_ES.UTF-8" LC_NUMERIC="es_ES.UTF-8" LC_TIME="es_ES.UTF-8" LC_COLLATE="es_ES.UTF-8" LC_MONETARY="es_ES.UTF-8" LC_MESSAGES=C LC_PAPER="es_ES.UTF-8" LC_NAME="es_ES.UTF-8" LC_ADDRESS="es_ES.UTF-8" LC_TELEPHONE="es_ES.UTF-8" LC_MEASUREMENT="es_ES.UTF-8" LC_IDENTIFICATION="es_ES.UTF-8" LC_ALL=
Como se ve, al definir en particular la variable LC_MESSAGES, se ha sobrescrito el valor determinado por LANG. Si, además, fijamos el valor de LC_ALL, veremos que todas las variables particulares adoptan su valor:
$ LC_MESSAGES=C LC_ALL=POSIX locale LANG=es_ES.UTF-8 LANGUAGE= LC_CTYPE="POSIX" LC_NUMERIC="POSIX" LC_TIME="POSIX" LC_COLLATE="POSIX" LC_MONETARY="POSIX" LC_MESSAGES="POSIX" LC_PAPER="POSIX" LC_NAME="POSIX" LC_ADDRESS="POSIX" LC_TELEPHONE="POSIX" LC_MEASUREMENT="POSIX" LC_IDENTIFICATION="POSIX" LC_ALL=POSIX
En Debian se configura sólo una variable LANG global dentro de
/etc/default/locale
, de modo que si se quiere cambiar su valor, basta
comn editar del fichero. No obstante, el mejor modo de retocar la configuración
de las [variables] locales es ejecutar:
# dpkg-reconfigure locales
Que de forma sencilla nos pedirá cuáles son las lenguas para las que deseamos tener soporte y cuál es la que queremos definir como predeterminada.
Obviamente, si algún usuario desea una configuración distinta a la predeterminada, no tiene más que definir las variables locales que desee oportunas en algún fichero que lea la shell al cargarse.
Advertencia
Es muy recomendable que el administrador tenga definida su variable LC_MESSAGES a C, para que los futuros mensajes de error que devuelvan las aplicaciones estén escritos en inglés, ya que es más fácil encontrar una referencia a ese error en internet en este idioma.
2.4.2.3. Configuración del teclado¶
Al configurar el teclado debemos distinguir entre la configuración del teclado para las consolas virtuales y la del teclado para el entorno gráfico.
Para modificar la configuración del teclado en las consolas virtuales es preciso usar la orden loadkeys. Por ejemplo:
# loadkeys es
cargará el teclado de España, si es que está instalado[4]. En las X, sin embargo, debe usarse setxkbmap:
$ setxkbmap es
Estas dos órdenes, sin embargo, sólo cambian la configuración temporalmente.
La configuración permanente que se carga al inicio, se almacena en Debian en
/etc/default/keyboard
(véase keyboard(5)). No obstante, lo
más recomendable es hacer los cambios mediante el configurador de Debian:
# dpkg-reconfigure keyboard-configuration
Nota
La configuración mediante localectl se limita
internamente a cambiar los archivos que se han mencionado en éste y en el
epígrafe anterior (/etc/default/locale
y
/etc/default/keyboard
).
Notas al pie