LPIC-1 Tema 107.3: locales e internacionalización
Siguiente entrega de la serie de las certificaciones LPIC-1. Esta vez lo referente al tema 107.3, el que hace referencia a los locales y la internacionalización. Configuraciones vitales para poder adaptar el sistema a tu zona horaria, lenguaje, etc.
Los candidatos deberán ser capaces de saber dónde están alojados los ficheros de configuración, así como las variables de entorno existentes, su ajuste, conocer algunos sistemas de códigos, herramientas como date, etc.
Ficheros de configuración
Entre los ficheros de configuración más importantes que debes conocer están:
- /etc/localtime: es un fichero de configuración de la zona horaria del sistema local. Con las reglas exactas relativas al tiempo en UNIX (la representación interna usada por el kernel desde la fecha cero 01-01-1970 00:00:00 UTC), compensaciones UTC, horario de invierno y verano, años bisiestos, etc. Los programas usan este fichero para la presentación al usuario. Este fichero es un enlace simbólico hacia /usr/share/zoneinfo/ donde se encuentran las zonas horarias. Por ejemplo Europe/Madrid. Así, mediante el enlace se podrá hacer uso del binario tzfile correspondiente a la zona horaria configurada.
- /etc/timezone: es un fichero de texto plano, incluye el continente y lugar, a menos que se use una configuración más genética UTC. La diferencia con el anterior es solo el contenido y formato. Mientras éste es en texto plano, localtime es un binario. Además, el propósito de timezone es que localtime se actualice correctamente cuando se actualizan los ficheros de /usr/share/zoneinfo.
Por ejemplo, para cambiar la configuración de hora en tu distro podrías usar el siguiente comando:
#Cambiando al horario CEST (Madrid) ln -sf /usr/share/zoneinfo/Europe/Madrid /etc/locatime #Y para consultar la configuración actual cat /etc/timezone
Herramientas
Además de los ficheros de configuración básicos también debes conocer herramientas como:
- tzselect: es un programa que pregunta al usuario los detalles de la zona horaria para seleccionar la correcta. Una forma cómoda de configurarlo en vez de usar enlace simbólico como en el apartado anterior.
#Seleccionar hora tzselect
- timedatectl: con systemd también hay más formas de cambiar la zona horaria en un sistema con esta herramienta específica. Por ejemplo:
#Cambiar la zona horaria timedatectl set-timezone Europe/Madrid
*También existen otras formas desde el entorno de escritorio o usando herramientas como YaST, dpkg-reconfigure, etc.
- date: es un comando usado para mostrar la hora y fecha del sistema. Además, también sirve para cambiar la fecha y la hora. Para cambiar necesita privilegios. Tendrías que conocer que por defecto usa un formato MMDDhhmmYYYY.ss (el año se puede poner en formato YY o YYYY). Por ejemplo:
#Mostrar la fecha y hora date #Poner una fecha y hora al 28 de octubre de 2020 a las 11:58 sería date "102811582020" #Mostrar la última modificación de un fichero (timestamp) date -r fichero.txt #Más información man date
- iconv: permite convertir texto en una de las codificaciones disponibles. Por ejemplo:
#Mostrar los tipos de codificación iconv -l #Convertir de UTF-8 a ASCII iconv -f UTF-8 -t ASCII -o origen.txt destino.txt #Puedes ver el tipo con file -i destino.txt
- locale: conseguir información de los locales configurados en tu distro. La salida de este comando puede ser algo como:
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=
Como ves, son variables configuradas en tu sistema. Como ves, se pueden configurar el formato de direcciones, teléfonos, unidades, monedas, lenguaje, etc.
En este caso se usa codificación UTF-8 y es_ES (español de España). Pero se podría usar otras codificaciones (ASCII, Unicode, ISO-8859) y otros locales de otros países como sv_SE (sueco de Suecia), de_ (alemán de Alemania), es_AR (español de Argentina), en_US (inglés de EE.UU.), en_UK (inglés de Reino Unido), etc.
#Más información man locale #Consultar más códigos de idiomas cd /usr/share/locale ls
En cuanto a la codificación, deberías conocer por encima cada uno de los tipos:
- ASCII: es un sistema de codificación basado en el alfabeto inglés. Son las siglas de American Standard Code for Information Interchange. Más información.
- ISO-8859: estándar de codificación de 8-bit para caracteres. Más información.
- Unicode: estándar de la industria de la computación para codificar la mayoría de escrituras del mundo. Más información.
- UTF-8: codificación capaz de codificar todos los posibles caracteres. Diseñado originalmente por Ken Thompson y Rob Pike. Más información.