Flashcards: 107.3 - Localizacion E Internacionalizacion

33 tarjetas de repaso. Usa el sistema de repeticion espaciada para memorizar.

P: Un sistema tiene las siguientes variables configuradas. Que idioma se usara para los mensajes del sistema?

R: b) Ingles, porque LC_MESSAGES sobreescribe a LANG para los mensajes. El orden de prioridad de las variables de locale es: LC_ALL > LC_* individuales > LANG. Como LC_ALL esta vacia, no sobreescribe nada. LC_MESSAGES=en_US.UTF-8 esta definida explicitamente, asi que los mensajes del sistema estaran en ingles. Las demas categorias (LC_NUMERIC, LC_TIME, LC_COLLATE, etc.) que NO estan definidas explicitamente heredan el valor de LANG=es_ES.UTF-8 (espanol). Esta configuracion es comun en servidores donde se quiere el sistema en espanol pero los mensajes de error en ingles para facilitar su busqueda.


P: Cual es la principal ventaja de UTF-8 sobre ISO-8859-1 (Latin-1)?

R: b) UTF-8 soporta todos los idiomas del mundo simultaneamente y es compatible con ASCII. UTF-8 es una codificacion de longitud variable (1 a 4 bytes por caracter) que soporta mas de un millon de caracteres de todos los idiomas. Los primeros 128 caracteres son identicos a ASCII (compatibilidad hacia atras). ISO-8859-1 solo soporta 256 caracteres (8 bits), cubriendo unicamente idiomas de Europa Occidental. Con ISO-8859-1 no se pueden mezclar idiomas como espanol y ruso en el mismo texto. UTF-8 no siempre ocupa menos espacio: un caracter acentuado ocupa 2 bytes en UTF-8 pero solo 1 en ISO-8859-1.


P: Que comando convierte un archivo de codificacion ISO-8859-1 a UTF-8?

R: b) iconv -f ISO-8859-1 -t UTF-8 archivo.txt -o archivo_utf8.txt. iconv es la herramienta estandar para convertir entre codificaciones. Las opciones son: -f (from, codificacion de origen), -t (to, codificacion de destino), -o (archivo de salida). Tambien se puede usar redireccion: iconv -f ISO-8859-1 -t UTF-8 archivo.txt > archivo_utf8.txt. Para listar todas las codificaciones soportadas se usa iconv -l. Opciones adicionales: //TRANSLIT intenta transliterar caracteres no disponibles y //IGNORE los omite.


P: Cual es la diferencia entre tzselect y timedatectl set-timezone?

R: b) tzselect solo ayuda a elegir una zona horaria (no cambia la configuracion); timedatectl set-timezone si cambia la zona horaria del sistema. tzselect es una herramienta interactiva que presenta un menu con continentes y ciudades para ayudar al usuario a elegir una zona horaria, pero NO modifica la configuracion del sistema. Solo muestra el nombre de la zona seleccionada (por ejemplo, Europe/Madrid). timedatectl set-timezone Europe/Madrid si cambia la configuracion del sistema, modificando /etc/localtime y actualizando la zona horaria de forma efectiva e inmediata.


P: Que archivo es un enlace simbolico que apunta a la zona horaria activa del sistema?

R: b) /etc/localtime. /etc/localtime es un enlace simbolico (o copia) que apunta al archivo de zona horaria activa dentro de /usr/share/zoneinfo/. Por ejemplo: /etc/localtime -> /usr/share/zoneinfo/Europe/Madrid. Es leido por las aplicaciones del sistema para determinar la zona horaria. /etc/timezone es un archivo de texto plano (solo en Debian/Ubuntu) que contiene el nombre de la zona horaria (por ejemplo, Europe/Madrid). /usr/share/zoneinfo/ es el directorio con todos los archivos binarios de zonas horarias.


P: Que variable de entorno permite a un usuario usar una zona horaria diferente a la del sistema sin modificar la configuracion global?

R: c) TZ. La variable TZ permite a un usuario o proceso usar una zona horaria diferente a la configurada en el sistema (que se define en /etc/localtime). Por ejemplo: TZ="America/New_York" date muestra la hora en Nueva York, y export TZ="Asia/Tokyo" establece la zona para toda la sesion. TZ tiene prioridad sobre /etc/localtime para el proceso que la define. LC_TIME controla el formato de presentacion de fechas (idioma) pero no la zona horaria en si.


P: Que es el locale C (o POSIX) y que efecto tiene en el ordenamiento de texto?

R: b) Es el locale minimo estandar que usa ASCII y ordena por valor numerico del byte (mayusculas antes que minusculas). El locale C (equivalente a POSIX) es el locale minimo estandar definido por POSIX. Usa codificacion ASCII (128 caracteres), idioma ingles basico, y un orden de clasificacion basado en el valor numerico del byte (A-Z [65-90] antes que a-z [97-122]). Es predecible y consistente en cualquier sistema. Se usa en scripts para comportamiento determinista: LC_ALL=C sort archivo.txt ordena por valor ASCII. En contraste, es_ES.UTF-8 usa reglas linguisticas espanolas que pueden ignorar mayusculas y tratar acentos de forma especial.


P: Que comando de systemd se usa para configurar el locale y el layout del teclado del sistema?

R: c) localectl. localectl es la herramienta de systemd para configurar el locale y el layout del teclado del sistema. localectl status muestra la configuracion actual. localectl set-locale LANG=es_ES.UTF-8 establece el locale. localectl set-keymap es establece el layout del teclado de la consola virtual. localectl set-x11-keymap es establece el layout para X11. localectl list-locales lista los locales disponibles. El archivo de configuracion resultante es /etc/locale.conf en sistemas con systemd.


P: Un administrador quiere un servidor con formato de fechas y numeros en espanol pero mensajes del sistema en ingles. Que configuracion debe usar?

R: b) LANG=es_ES.UTF-8 y LC_MESSAGES=en_US.UTF-8. LANG=es_ES.UTF-8 establece espanol como valor por defecto para todas las categorias (fecha, numeros, moneda, clasificacion, etc.). LC_MESSAGES=en_US.UTF-8 sobreescribe solo los mensajes del sistema a ingles, ya que las variables LC_* individuales tienen prioridad sobre LANG. NO se debe usar LC_ALL porque sobreescriria TODAS las categorias. Esta configuracion es comun en servidores porque los mensajes de error en ingles son mas faciles de buscar en documentacion. Se configura en /etc/locale.conf o /etc/default/locale.


P: Que muestra el comando timedatectl y que subcomando activa la sincronizacion NTP?

R: b) Muestra la fecha, hora, zona horaria y estado de sincronizacion; timedatectl set-ntp true. timedatectl (o timedatectl status) muestra: hora local, hora UTC, hora del reloj RTC (hardware), zona horaria actual, si el reloj esta sincronizado con NTP y si el servicio NTP esta activo. timedatectl set-ntp true activa la sincronizacion de tiempo con NTP (generalmente systemd-timesyncd o chrony). Otros subcomandos utiles: timedatectl set-timezone Europe/Madrid (cambiar zona horaria), timedatectl list-timezones (listar zonas disponibles), timedatectl set-time "2026-05-28 14:00:00" (establecer fecha/hora manualmente).


P: Que significa la abreviatura i18n en el contexto de la localizacion de software?

R: b) Internacionalizacion, con 18 letras entre la i y la n. i18n es la abreviatura de “internationalization” (internacionalizacion), donde el numero 18 representa las 18 letras entre la primera i y la ultima n. La internacionalizacion es el proceso de disenar software para que pueda adaptarse a diferentes idiomas y regiones sin modificar el codigo fuente. De forma similar, l10n es la abreviatura de “localization” (localizacion, 10 letras entre la l y la n), que es el proceso de adaptar el software a un idioma y region especificos.


P: Si se ejecuta export LC_ALL=en_US.UTF-8 en un sistema con LANG=es_ES.UTF-8 y LC_TIME=de_DE.UTF-8, en que idioma se mostraran las fechas?

R: c) Ingles, porque LC_ALL sobreescribe todas las demas variables. LC_ALL tiene la maxima prioridad y sobreescribe TODAS las demas variables de locale, incluyendo tanto LANG como cualquier variable LC_* individual. El orden de prioridad es: LC_ALL > LC_* individuales > LANG. Por lo tanto, al definir LC_ALL=en_US.UTF-8, todo el sistema usara ingles: las fechas, los mensajes, los numeros, el formato de moneda, etc. Por esta razon, LC_ALL solo se recomienda para uso temporal, no para configuracion permanente.


P: Que opcion de iconv permite intentar transliterar caracteres que no existen en la codificacion de destino?

R: b) -t DESTINO//TRANSLIT. La opcion //TRANSLIT se agrega al nombre de la codificacion de destino en la opcion -t. Por ejemplo: iconv -f UTF-8 -t ASCII//TRANSLIT archivo.txt intentara transliterar caracteres UTF-8 que no existen en ASCII (por ejemplo, convirtiendo e acentuada a e sin acento). Si la transliteracion no es posible, se genera un error. Otra opcion es //IGNORE, que simplemente omite los caracteres que no se pueden convertir.


P: Que archivo define la configuracion del locale del sistema en distribuciones basadas en Debian/Ubuntu?

R: b) /etc/default/locale. En Debian/Ubuntu, la configuracion del locale del sistema se almacena en /etc/default/locale, que contiene variables como LANG="es_ES.UTF-8". En Red Hat/Fedora/Arch (sistemas con systemd), se usa /etc/locale.conf. El archivo /etc/locale.gen en Debian/Ubuntu contiene la lista de locales que se deben generar (se procesan con locale-gen). /etc/sysconfig/locale no es un archivo estandar.


P: Que comando genera los locales configurados en /etc/locale.gen en un sistema Debian?

R: c) locale-gen. El comando locale-gen genera los locales listados y descomentados en /etc/locale.gen. En Debian/Ubuntu, los locales se deben generar antes de poder usarlos. El proceso consiste en editar /etc/locale.gen para descomentar las lineas de los locales deseados (por ejemplo, es_ES.UTF-8 UTF-8) y luego ejecutar locale-gen. Alternativamente, se puede usar dpkg-reconfigure locales (con s al final) que ofrece una interfaz interactiva.


P: Que directorio contiene todos los archivos de zona horaria del sistema?

R: b) /usr/share/zoneinfo/. El directorio /usr/share/zoneinfo/ contiene archivos binarios con la informacion de cada zona horaria, organizados por region geografica (por ejemplo, America/Mexico_City, Europe/Madrid, Asia/Tokyo). El archivo /etc/localtime es un enlace simbolico que apunta al archivo de zona horaria activa dentro de este directorio. Para cambiar la zona horaria se puede modificar el enlace con ln -sf /usr/share/zoneinfo/ZONA /etc/localtime o usar timedatectl set-timezone ZONA.


P: Que variable de locale controla especificamente el formato de presentacion de numeros (separador decimal y de miles)?

R: b) LC_NUMERIC. LC_NUMERIC controla el formato de numeros, incluyendo el separador decimal (punto o coma) y el separador de miles. Por ejemplo, en es_ES.UTF-8 el separador decimal es la coma (1.234,56), mientras que en en_US.UTF-8 es el punto (1,234.56). LC_MONETARY controla el formato de moneda. LC_CTYPE controla la clasificacion de caracteres. LC_COLLATE controla el orden de clasificacion de cadenas de texto.


P: Que diferencia hay entre la codificacion ISO-8859-1 y la ISO-8859-15?

R: b) ISO-8859-15 incluye el simbolo del euro y algunos caracteres adicionales que ISO-8859-1 no tiene. ISO-8859-15 (tambien llamada Latin-9) es una revision de ISO-8859-1 (Latin-1) que reemplaza 8 caracteres poco usados por otros mas utiles, incluyendo el simbolo del euro, las letras ligadas francesa y finlandesa (OE, oe) y la S y Z con caron. Ambas son codificaciones de 8 bits (256 caracteres) para idiomas de Europa Occidental. Ninguna soporta caracteres asiaticos; para eso se necesita UTF-8.


P: Que comando de systemd cambia la zona horaria del sistema a America/Mexico_City?

R: b) timedatectl set-timezone America/Mexico_City. timedatectl set-timezone America/Mexico_City cambia la zona horaria del sistema de forma efectiva e inmediata, modificando el enlace simbolico /etc/localtime. localectl se usa para configurar el locale y el teclado, no la zona horaria. tzselect es una herramienta interactiva que ayuda a elegir una zona horaria pero NO cambia la configuracion del sistema. systemctl timezone no es un comando valido.


P: Que comando permite configurar el layout del teclado de la consola virtual en un sistema con systemd?

R: b) localectl set-keymap es. localectl set-keymap es configura el layout del teclado de la consola virtual (VC Keymap) en sistemas con systemd. Para configurar el layout del teclado de X11 se usa localectl set-x11-keymap es. setxkbmap tambien puede configurar el teclado de X11 pero de forma temporal (solo para la sesion actual). timedatectl se usa para fecha, hora y zona horaria, no para el teclado.


P: Escribe el comando para mostrar la configuracion actual de todas las variables de locale del sistema.

R: locale. El comando locale sin argumentos muestra el valor de todas las variables de locale: LANG, LC_CTYPE, LC_NUMERIC, LC_TIME, LC_COLLATE, LC_MONETARY, LC_MESSAGES, LC_PAPER, LC_NAME, LC_ADDRESS, LC_TELEPHONE, LC_MEASUREMENT y LC_ALL. Para listar todos los locales disponibles en el sistema se usa locale -a.


P: Escribe el comando para listar todos los locales disponibles en el sistema.

R: locale -a. El comando locale -a lista todos los locales que estan generados y disponibles para su uso en el sistema. La lista incluye variantes como es_ES.UTF-8, en_US.UTF-8, C, POSIX, etc. En Debian/Ubuntu, los locales se generan con locale-gen a partir de /etc/locale.gen. En sistemas con systemd, se pueden listar tambien con localectl list-locales.


P: Escribe el comando de iconv para convertir un archivo de ISO-8859-1 a UTF-8.

R: iconv -f ISO-8859-1 -t UTF-8. El comando iconv -f ISO-8859-1 -t UTF-8 archivo.txt convierte el contenido de archivo.txt de la codificacion ISO-8859-1 a UTF-8. La opcion -f indica la codificacion de origen (from) y -t la de destino (to). La salida se envia a stdout por defecto; se puede redirigir con > salida.txt o usar la opcion -o salida.txt. Para listar todas las codificaciones disponibles: iconv -l.


P: Escribe el comando para cambiar la zona horaria del sistema a Europe/Madrid usando timedatectl.

R: timedatectl set-timezone Europe/Madrid. El comando timedatectl set-timezone Europe/Madrid cambia la zona horaria del sistema, actualizando el enlace simbolico /etc/localtime para apuntar a /usr/share/zoneinfo/Europe/Madrid. Para listar todas las zonas horarias disponibles: timedatectl list-timezones. Para verificar la configuracion actual: timedatectl status.


P: Escribe el comando para establecer el locale del sistema a es_ES.UTF-8 usando la herramienta de systemd.

R: localectl set-locale LANG=es_ES.UTF-8. El comando localectl set-locale LANG=es_ES.UTF-8 establece el locale del sistema en distribuciones con systemd, escribiendo la configuracion en /etc/locale.conf. Se pueden configurar multiples variables a la vez: localectl set-locale LANG=es_ES.UTF-8 LC_MESSAGES=en_US.UTF-8. Para verificar la configuracion: localectl status.


P: Que hace el comando LANG?

R: Configuracion por defecto para todas las categorias


P: Que hace el comando LC_CTYPE?

R: Clasificacion de caracteres (mayusculas, minusculas, digitos)


P: Que hace el comando LC_MESSAGES?

R: Idioma de mensajes del sistema y aplicaciones


P: Que hace el comando LC_NUMERIC?

R: Formato de numeros (separador decimal, miles)


P: Que hace el comando LC_COLLATE?

R: Orden de clasificacion de cadenas (sort)


P: Un usuario ejecuta locale y ve que LC_COLLATE, LC_MONETARY y LC_CTYPE muestran es_ES.UTF-8, pero el nunca configuro esas variables individualmente. Solo tiene LANG=es_ES.UTF-8 en su perfil. Por que aparecen esos valores en las variables LC_* si no las definio explicitamente?

R: Porque LANG actua como valor por defecto para todas las categorias LC_* que no estan definidas explicitamente. Cuando el comando locale muestra los valores de cada variable, las que no tienen un valor propio heredan el de LANG. Por eso, si solo se define LANG=es_ES.UTF-8, todas las categorias (LC_CTYPE, LC_NUMERIC, LC_TIME, LC_COLLATE, LC_MONETARY, LC_MESSAGES, LC_PAPER, LC_NAME, LC_ADDRESS, LC_TELEPHONE, LC_MEASUREMENT) mostraran es_ES.UTF-8. Solo si se define una variable LC_* individual, esa categoria usara su propio valor en lugar del de LANG. Y si se define LC_ALL, esta sobreescribe absolutamente todo. El orden de prioridad es: LC_ALL > LC_* individuales > LANG.


P: Un administrador necesita migrar un archivo CSV legacy codificado en ISO-8859-15 a UTF-8, pero algunos registros contienen caracteres griegos que no existen en la codificacion de destino y no quiere que la conversion falle. Que comando debe usar y que opcion garantiza que los caracteres problematicos se manejen sin generar un error?

R: Debe usar iconv -f ISO-8859-15 -t UTF-8//IGNORE archivo.csv > archivo_utf8.csv. La opcion //IGNORE agregada a la codificacion de destino hace que iconv omita silenciosamente los caracteres que no se pueden convertir, en lugar de abortar con un error. En este caso concreto, como UTF-8 soporta todos los caracteres Unicode (incluyendo griegos), la conversion de ISO-8859-15 a UTF-8 no deberia perder caracteres del conjunto ISO-8859-15. Pero si la situacion fuera inversa (de UTF-8 a ISO-8859-15), los caracteres griegos se perderian. Otra opcion es //TRANSLIT, que intenta reemplazar caracteres no disponibles por aproximaciones visualmente similares (por ejemplo, convierte letras acentuadas a sus equivalentes sin acento). Se pueden combinar ambas: -t ASCII//TRANSLIT//IGNORE. Para ver todas las codificaciones soportadas se usa iconv -l.


P: En el examen LPIC-1 aparece esta pregunta: “Un administrador ejecuta tzselect y selecciona America/Bogota. Al ejecutar date despues, la hora sigue mostrando la zona horaria anterior. Que ocurrio?” Cual es la respuesta correcta y que otras trampas clasicas de localizacion aparecen en el examen?

R: tzselect es solo una herramienta interactiva de consulta que muestra el nombre de la zona horaria seleccionada pero NO modifica la configuracion del sistema. Para cambiar la zona horaria realmente se debe usar timedatectl set-timezone America/Bogota o crear el enlace simbolico ln -sf /usr/share/zoneinfo/America/Bogota /etc/localtime. Otras trampas clasicas del examen en 107.3: (1) Confundir LC_ALL con LANGLC_ALL sobreescribe TODAS las variables de locale, mientras que LANG solo actua como valor por defecto para las no definidas. (2) Creer que LC_TIME cambia la zona horaria — LC_TIME solo controla el formato de presentacion de fechas (idioma), la zona horaria se controla con TZ o /etc/localtime. (3) Confundir /etc/locale.conf (Red Hat/systemd) con /etc/default/locale (Debian/Ubuntu). (4) Olvidar ejecutar locale-gen despues de editar /etc/locale.gen en Debian. (5) Pensar que localectl cambia la zona horaria — localectl configura locale y teclado; la zona horaria se gestiona con timedatectl.