6.4.4.2.- Consulta y define el ajuste local

Para poder localizar su ordenador, debemos saber qué es un ajuste local en el argot de Linux. Una vez que sepamos los fundamentos, podrá identificar su ajuste local actual y los demás que tiene disponibles. Si fuera necesario, puede instalar otros datos de ajuste local. Después, podrá configurar su ordenador para que utilice dichos ajustes.

¿Que es un ajuste local?

En Linux, un ajuste local es la manera de especificar un idioma y el país donde se ubica el ordenador (o el usuario) y la información relacionada con la personalización de la visualización. Un único ajuste local adopta la siguiente forma:

ajuste_local_1

Desglosemos cada parte de la cadena:

ajuste_local_2

AJUSTE_LOCAL_3

ajuste_local_4

ASCII es el método de codificación más antiguo; emplea una codificación de 7 bits (que suele almacenarse en bytes de 8 bits) que puede utilizarse para el Inglés, incluyendo los símbolos y marcas de puntuación comunes.

Sin embargo, ASCII no puede manejar los caracteres que se emplean en la mayoría de los demás idiomas, por lo que no son adecuados para estos fines. ISO-8859 fué uno de los primeros intentos de ampliar ASCII; emplea un octavo bit para ampliar ASCII a 128 caracteres, haciendo sitio a los caracteres que necesitan un pequeño número de alfabetos no romanos. ISO-8859 se divide en muchos subestándares, donde cada cual se ocupa de un idioma o un pequeño grupo de idiomas. ISO-8859 abarca los idiomas de Europa del este y ISO-8859-5 incluye el cirílico, por ejemplo.

ajuste_local_5

¿Cual es nuestro ajuste local?

 Podemos asignar el código de ajuste local a una o varias variables de entorno. Para saber como están definidos éstas en su sistema, ejecute el comando locale sin argumentos:

ajuste_local_6

Vemos la existencia de unas cuantas variables de ajuste local. Cuando los programas consultan estas variables, realizan automáticamente los ajustes necesarios en función de los valores. Por ejemplo, un procesador de texto puede tener una configuración por defecto que utilice los tamaños de papel de EE.UU (como 8,5 x 11 pulgadas) si el código del territorio de LC_PAPER está definido como US y unos tamaños de papel europeo (como A4, 210 x 297 mm) cuando el territorio está definido como país en el que son más comunes estos tamaños.

La mayoría de estas variables de ajuste local definen características obvias y específicas, como LC_PAPER (tamaño del papel), LC_MEASUREMENT (unidades de medida), etc. La variable LC_ALL se emplea para realizar invalidaciones maestras; es decir, invalida el resto de las variables LC_*.

Otra variable de entorno relacionada es LANG que recibe el mismo tipo de especificación de ajuste local que las variables LC_* definiendo el ajuste local en caso de que las variables LC_* no se hayan definido.

Cuando usemos el comando locale, debería probarlo con la opción -a, que identifica a todos los ajustes locales que están disponibles:

ajuste_local_7

En este ejemplo (de un sistema Ubuntu 16.04) vemos los ajustes locales instalados. Algunos sistemas pueden que tengan muchos menos.

Cambiar el ajuste local

Si desea cambiar su ajuste local, primero deberá verificar que hay disponible uno apropiado para su caso empleando locale -a. Si no ve los códigos apropiados, puede que necesite instalar paquetes adicionales, por desgracia, los nombres de estos paquetes no están estandarizados. Lo más aconsejable es utilizar los gestores de  paquetes GUI como Synaptic (aunque existen varios gestores de paquetes distintos) para buscar los nombres y descripciones de los paquetes que incluyen locale o language. En el caso del sistema Ubuntu proporciona sólo unos cuantos ajustes locales, podemos instalar muchos más desde paquetes con el nombre language-support-??, donde ?? es un código de idioma de dos caracteres.

El modo más sencillo de cambiar temporalmente su ajuste local es definir la variable de entorno LC_ALL. Por seguridad, debería definir también LANG. Por ejemplo, para utilizar el ajuste local de Gran Bretaña en lugar del de España, podemos escribir:

ajuste_local_8

El resultado debería ser un cambio de todas las variables locales para dicha sesión. También habrá cambios en la salida de los programas que tienen en cuenta estos ajustes. Este cambio solo afecta a la consola actual y a los programas que se inician desde ésta, por lo que no observaremos cambios en los programas que ya están en ejecución o los que inicie desde otra consola.

ajuste_local_9

Para cambiar su ajuste local permanentemente, puede ajustar sus ficheros de script de inicio de bash, como ~/.bashrc o /etc/profile, como vimos en la sección 1.2  (los scripts de consola los veremos con más detalle en las próximas secciones, ajustar y definir las variables de entorno LANG y LC_ALL es bastante intuitivo).

 El fichero de configuración de X (x.org o XF86Config) incluye una opción llamada XkbLayout en la sección InputDevice del teclado. Esta opción recibe una especificación parcial o completa del ajuste local, pero en minúsculas; por ejemplo, us o en_us.utf-8. el ajuste de esta opción puede proporcionarle un acceso a teclas específicas del idioma o el país. Tras cambiar esta opción, tendrá que reiniciar X para que los cambios tengan efecto.

Hay un parámetro que requiere una mención especial: LANG=C. Cuando define LANG como C, los programas que ven esta variable de entorno muestran una salida que no ha pasado por el filtro de las traducciones de los ajustes locales. Esto nos puede resultar útil en algunos casos en los que el ajuste local corrompe la salida de un programa; por ejemplo, cuando las conversiones a UTF-8 cambian los caracteres que se deberían preservar como entidades de 8 bits. Por consiguiente, si define LANG=C puede que evite algunos tipos de problemas, en particular en las canalizaciones  y scripts que le pasan los datos de un programa a otro en formato binario.

tux_maestro_derNOTA: El soporte de la localización es, en mayor o menor medida, responsabilidad del autor de cada programa. Es completamente posible desarrollar un programa que sólo acepte un idioma o un pequeño conjunto de idiomas. Por lo tanto, no podrá hacer que todos los programas acepten el lenguaje que desea, en particular si es uno de los habituales.

Modificar los ajustes locales de los ficheros de texto

A veces, es necesario procesar datos de tipo de texto generados en un sistema que empleaba una codificación con un programa que no admite ésta. Por ejemplo, podría ocurrir que nuestro editor de texto favorito admitiera UTF-8 pero no  ISO-8859. Si solo trabaja con ficheros de texto en inglés con ASCII, no habrá problema, pero si recibe un fichero de texto ISO-8859-1 con caracteres no romanos, como la diéresis, su editor podría mostrar éstos de una manera extraña.

Para resolver este problema, la utilidad iconv realiza conversiones entre conjunto de caracteres. Su sintaxis es:

ajuste_local_10

Las opciones -f y -t especifican las codificaciones de origen y de destino (podemos obtener una lista de codificaciones escribiendo iconv --list). Si omitimos la codificación de destino, iconv utilizará como guía su ajuste local. El programa enviará la salida a la salida estándar, por lo que si desea almacenar los datos en un fichero, deberá redirigirlos:

ajuste_local_11