Capítulo 8. I18N y L10N

Tabla de contenidos

8.1. La entrada por teclado
8.1.1. El soporte al método de entrada con lBus
8.1.2. Ejemplo para el japonés
8.1.3. Desactivación del método de entrada
8.2. La salida por pantalla
8.3. Ancho de los caracteres ambiguos de Asia oriental
8.4. Configuración regional
8.4.1. Fundamentos de codificación
8.4.2. Razón de ser de la configuración regional UTF-8
8.4.3. Reconfiguración de la configuración regional
8.4.4. Valor de la variable de entorno «$LANG»
8.4.5. Especificación de la configuración regional en las Ventanas X
8.4.6. Códificación del nombre del archivo
8.4.7. Configuración regional de los mensajes y documentación traducida
8.4.8. Efectos de la configuración regional

El Multilenguaje (M17N) o Soporte del Lenguaje Propio para el software de aplicaciones se realiza en dos pasos.

[Sugerencia] Sugerencia

Hay 17, 18, o 10 letras entre «m« y «n«, «i« y «n«, o «l« and «n« en multilenguaje, internacionalización y la localización que se corresponden M17N, I18N, y L10N.

El software moderno como GNOME y KDE son multilenguaje. Están internacionalizados haciendo que gestionen los datos en UTF-8 y localizados aportando la traducción de sus mensajes a través de la infraestructura gettext(1). Los mensajes traducidos pueden ser aportados por paquetes especificos de localización. Estos pueden ser seleccionados dandole el valor correcto a las variables de entorno correspondientes con la configuración regional apropiada.

La representación más sencilla de información en formato texto es en ASCII la cual es suficiente para el inglés y utiliza menos de 127 caracteres (códificados por 7 bits). Para poder representar muchos más caracteres para la funcionalidad de internacionalización, se crearon muchos sistemas de codificación de caracteres. El sistema de codificación moderno y razonable es UTF-8 el cual puede gestionar practicamente cualquier carácter conocido por los humanos (consulte Sección 8.4.1, “Fundamentos de codificación”).

Para más detalles consulte Introducción a i18n.

El soporte hardware a la internacionalización se realiza mediante la información de configuración del hardware de localización.

[Aviso] Aviso

Este capítulo esta desactualizado ya que esta fundamentado en Debian 7.0 (Wheezy) publicado en 2013.

El sistema Debian peude ser configurado para trabajar con muchas disposiciones internacionales del teclado utilizando los paquetes keyboard-configuration y console-setup.

# dpkg-reconfigure keyboard-configuration
# dpkg-reconfigure console-setup

Esto configura el teclado para la consola de Linux y la ventana X actualiza los parámetros de configuración en «/etc/default/keyboard» y «/etc/default/console-setup». Esto también configura el tipo de letra de la consola Linux.

Muchos caracteres no ASCII incluyen caracteres acentuados utilizados en muchos lenguajes europeos los cuales se pueden conseguir con la tecla inerte, la tecla AltGr y la tecla de composición.

Para los lenguajes asiáticos, necesitará utilizar métodos de entrada más complicados que aportan lo que discutiremos a continuación como IBus.

La consola de Linux solo puede mostrar un número limitado de caracteres. (Necesitará un programa de terminal especial como ifbterm(1) para visualizar lenguajes no europeos en una consola que no sea X).

Las Ventanas X pueden mostrar cualquier carácter UTF-8 como necesitan los datos de los tipos de letra que existen (el Sistema de Ventanas X se encarga de la codificación de los datos de tipos de letra originales, siendo transparente para el usuario).

En las configuraciones regionales de Asia oriental, el área de dibujo de los caracteres griegos y cirílicos puede ser ampliada más allá de lo deseado causando que no se muestren alineados en la salida (consulte Anexo Estándar de Unicode #11).

Puede solucionar este problema:

  • gnome-terminal: Editar → Preferencias → Perfiles → Editar → Compatibilidad → Caracters de ancho ambiguo → Estrechar

  • ncurses: asigne en el entorno export NCURSES_NO_UTF8_ACS=0.

La configuración regional de las aplicaciones que se ejecutan en un entorno de ventanas X comienza en gdm3(1).

La variable de entorno «LANG=xx_YY.ZZZZ» asigna a la configuración regional el código del lenguaje «xx», código del país «yy», y la codificación «ZZZZ» (consulte Sección 1.5.2, “La variable «$LANG»”).

La última versión estable del sistemas Debian asigna habitualmente la configuración regional como LANG=xx_YY.UTF-8». Así se usa la codificación UTF-8 con el juego de caracteres Unicode. Este sistema de codificación UTF-8 es un sistema que utiliza un sistema de codificación de varios bytes y utiliza los puntos del código de forma inteligente. Los datos ASCII, que consisten unicamente en 7 bits por código, son siempre datos UTF-8 correctos y consisten únicamente en un byte por carácter.

El sistema Debian anterior usaba la asignación de la configuración regional como «LANG=C» o «LANG=xx_YY» (sin «.UTF-8»).

  • El juego de caracteres ASCII es utilizado en «LANG=C» o «LANG=POSIX».

  • El sistema de codificación tradicional en Unix es «LANG=xx_YY».

Los sistemas de codificación tradicionales reales que se utilizan ahora como «LANG=xx_YY» pueden ser identificados comprobando «/usr/share/i18n/SUPPORTED». Por ejemplo, «en_US» utiliza la codificación «ISO-8859-1» y «fr_FR@euro» utiliza la codificación «ISO-8859-15».

[Sugerencia] Sugerencia

Para el significado de los valores de los códigos, consulte Tabla 11.2, “Relación de valores de codificación y su uso”.

EL conjunto de caracteres Unicode puede representar virtualmente todos los caracteres conocidos por el hombre con códigos que tienen el rango en notación hexadecimal desde 0 hasta 10FFFF. Su almacenamiento necesita al menos 21 bits.

El sistema de codificación de texto UTF-8 encaja en el código Unicode con una representación adecuada de flujos de 8 bits que la hace compatible con los sistemas de procesamiento de datos ASCII. UTF significa Formato de Transformación Unicode (Unicode Transformation Format).

Recomendaría la utilización de la configuración regional UTF-8 para el escritorio, p. ej. «LANG=en_US.UTF-8». La primera parte de la configuración regional determina el lenguaje en que las aplicaciones presentan los mensajes. Por ejemplo, gedit(1) (editor de texto del escritorio GNOME) con «LANG=fr_FR.UTF-8» la configuración regional puede mostrar y editar información en formato texto con caracteres chinos mientras visualiza los mensajes en francés, como lo determinan los métodos de entrada y tipos de letra instalados.

También recomendaria configurar la localización configurando unicamente la variable de entorno «$LANG». La configuración de la combinación de las variables «LC_*» (consulte locale(1)) en la configuración regional UTF-8 no aporta demasiadas ventajas.

Incluso texto plano en inglés puede contener caracteres que no perteneces a ASCII, p. ej. las comillas ligeramente inclinadas a izquierda y derecha no están incluidas en ASCII.

“comillas dobles de este texto” no son las  «comillas dobles ASCII«
‘comillas simples de este texto’ no son las 'comillas simples ASCII'

Cuando la información en formato de texto plano ASCII se convierte a UTF-8, tiene exactamente el mismo contenido y tamaño que el original ASCII. Así que no se pierde nada por configurar la configuración regional con UTF-8.

Algunos programas utilizan más memoria después de configurarlos con l18N. Esto es debido que han sido escritos para utilizar UTF-32(UCS4) internamente para utilizar Unicode con el fin de optimizar la velocidad y utilizan 4 bytes por cada carácter ASCII con independencia de la configuración regional seleccionada. Nuevamente, no se pierde nada por utilizar como configuración regional UTF-8.

Los sistemas de codificación no UTF-8 especificos de un producto tienden a tener menores pero molestas diferencias en algunos caracteres como los caracteres gráficos para muchos paises. La implantación del sistema UTF-8 de los modernos sistemas operativos generalmente solucionan estos conflictos de codificación.

Para que el sistema tenga acceso a una configuración regional particular, los datos de la configuración regional deben ser compilades desde la base de datos de las configuraciónes regionales. (El sistema Debian no ofrece todas las localizaciones precompiladas a menos que instale el paquete locales-all package.) La relación completa de configuraciónes regionales disponibles para la compilación está en «/usr/share/i18n/SUPPORTED». Esto enumera todos los nombres correctos de las configuraciónes regionales . La relación siguiente enumera las configuraciónes regionales UTF-8 compiladas en forma de binario.

$ locale -a | grep utf8

La ejecución de la orden siguiente reconfigura el paquete locales.

# dpkg-reconfigure locales

Este proceso consta de 3 pasos.

La relación de configuraciónes regionales disponibles debería incluir «en_US.UTF-8» y todos los lenguajes que encuentre interesantes con «UTF-8».

La preferencia para la configuración regional por defecto es «en_US.UTF-8» para el inglés US. Para otras lenguas, por favor, aseguresé de elegir una configuración regional con «UTF-8». Cualquiera de estas configuraciones puede gestionar cualquier carácter internacional.

[Nota] Nota

Aunque la configuración regional a «C» utiliza mensajes en inglés US, solo gestiona los caracteres de ASCII.

Puede elegir una configuración regional especifica solo para entornos X independientemente de la configuración completa de su sistema de la configuración regional utiizando la personalización mediante PAM (consulte Sección 4.5, “PAM y NSS”) de la forma que se describe a continuación.

Este entorno puede ofrecerle la mejor estabilidad y experiencia de usuario. Tiene acceso a las características de caracteres en el terminal con mensajes comprensible incluso cuando el Sistema de Ventanas X no funcione. Esto es fundamental para los lenguajes que utilizan caracteres no romanos como el japonés, el chino y el coreano.

[Nota] Nota

Puede existir otra manera de configurar la configuración regional como una mejora del paquete de gestión de sesiones X pero lea lo siguiente como el método genérico y básico. Para gdm3(1), se que puede seleccionar la configuración regional de la sesión X por medio de su menú.

La siguiente línea define la ubicación del archivo del entorno del lenguaje en el archivo de configuración PAM, como «/etc/pam.d/gdm3».

auth    required        pam_env.so read_env=1 envfile=/etc/default/locale

Cambie esto por lo siguiente.

auth    required        pam_env.so read_env=1 envfile=/etc/default/locale-x

Para el japonés cree un archivo «/etc/default/locale-x» con los permisos «-rw-r--r-- 1 root root» que contiene lo siguiente.

LANG=«ja_JP.UTF-8«

Mantenga el archivo por defecto «/etc/default/locale» para otros programas como sigue.

LANG=«en_US.UTF-8«

Esta es la técnica más genérica para personalizar la configuración regional y hacer del diálogo de selección de menú de gdm3(1) ser configurado regionalmente el mismo.

Para este caso de forma alternativa puede simplemente cambiar la configuración regional en el archivo «~/.xsessionrc».

Para el intercambio de datos entre plataformas (consulte Sección 10.1.7, “Dispositivos de almacenamiento extraibles”), puede necesitar montar un sistema de archivos con una codificación adecuada. Por ejemplo, mount(8) para el sistemas de archivos vfat da por sentado CP437 si se utiliza sin opciones. Necesitará proporcionar al montar una opción explícita para utilizar UTF-8 o CP932 para los nombres de archivos.

[Nota] Nota

Cuanto el automontaje o la conexión en caliente de de llaveros de memoria USB en los entornos de escritorio modernos como GNOME, puede introducir ese opción de montaje pulsando el botón derecho del ratón en el icono del escritorio, pulse en la pestaña «Unidad«, pulse para expandir «Configurar« e introduzca «utf8« en las «Opciones de montaje:«. La proxima vez que el llavero de memory se monte, UTF-8 estará activado.

[Nota] Nota

Si esta actualizando su sistema o modificando los discos duros desde un sistema antiguo que no soporta UTF-8, los nombres de los archivos con caracteres que no son ASCII pueden ser códificados con la histórica y obsoleta ISO-8859-1 o eucJP. Por favor busque ayuda entre las herramientas de conversión de texto para convertirlas a UTF-8. Consulte Sección 11.1, “Herramientas para la conversión de información en formato texto”.

Samba, por defecto, utiliza Unicode para los clientes nuevos (Windows NT, 200x, XP) pero utiliza CP850 para los viejos (DOS and Windows 9x/Me). El valor por defecto de los clientes viejos se puede cambiar modificando la entrada«dos charset» en el archivo «/etc/samba/smb.conf», p. ej. a CP932 para el japonés.

Existen traducciones para muchos de los mensajes de texto y documentos que el sistema Debian muestra, como los mensajes de error, salida estándar de los programas, menús y páginas de manual. El conjunto de herramientas de la orden GNU gettext(1) se utiliza como motor para la mayoría de las actividades relacionadas con las traducciones.

En «Tareas« → «Configuración regional« aptitude(8) tiene una relación muy completa de paquetes binarios útiles los cuales proporcionan mensajes según la configuración regional de las aplicaciones y documentación traducida.

Por ejemplo, puede tener los mensajes según su configuración regional instalando el paquete manpages-<LANG>. Para leer la página de man en italiano de <nombre_del_programa>desde «/usr/share/man/it/», ejecute lo siguiente.

LANG=it_IT.UTF-8 man <nombre_del_programa>