10.4. Ajustes de idioma y país

Gracias a su gran nivel de internacionalización, SUSE Linux es muy flexible para adaptarse a las necesidades locales. En otras palabras, la internacionalización (I18N) permite implementar localizaciones (L10N) específicas. Las abreviaturas I18N y L10N hacen referencia a los términos ingleses "internationalization" y "localization" respectivamente: mencionan la letra inicial y final de cada palabra y el número de caracteres que se han omitido en medio.

Los ajustes se realizan mediante las variables LC_ que se definen en el archivo /etc/sysconfig/language. No afectan sólo a la compatibilidad con el idioma nativo, sino también a las categorías de mensajes (idioma), conjunto de caracteres, criterios de ordenación, fecha y hora, números y moneda. Todas estas categorías se pueden definir directamente con su propia variable o de forma indirecta con una variable principal en el archivo language (consulte la página Man locale).

RC_LC_MESSAGES, RC_LC_CTYPE, RC_LC_COLLATE, RC_LC_TIME, RC_LC_NUMERIC, RC_LC_MONETARY

Estas variables se pasan a la shell sin el prefijo RC_ y representan las categorías indicadas arriba. A continuación, se describen los perfiles de shell en cuestión. El ajuste actual se puede mostrar con el comando locale.

RC_LC_ALL

Esta variable, si se define, sobrescribe los valores de las variables mencionadas anteriormente.

RC_LANG

Si no se define ninguna de las variables anteriores, ésta se usa como alternativa. Por defecto, SUSE Linux sólo define RC_LANG, lo que facilita el procedimiento a los usuarios a la hora de especificar sus propios valores.

ROOT_USES_LANG

Se trata de una variable cuyos valores son yes (sí) y no. Si se define como no, el usuario Root funcionará siempre en el entorno POSIX.

Las variables se pueden definir mediante el editor sysconfig de YaST (consulte la Sección 8.3.1, “Cambio de la configuración del sistema mediante el editor YaST sysconfig”). El valor de una variable de este tipo incluye el código del idioma, el código del país, el tipo de codificación y el modificador. Todos estos componentes individuales se conectan mediante caracteres especiales:

 
  LANG=<idioma>[[_<PAÍS>].<Codificación>[@<Modificador>]] 

10.4.1. Ejemplos

Los códigos de idioma y país se deben definir juntos. El idioma sigue la norma ISO 639, que está disponible en http://www.evertype.com/standards/iso639/iso639-en.html y en http://www.loc.gov/standards/iso639-2/. Los códigos de países están definidos en la norma ISO 3166, que está disponible en http://www.din.de/gremien/nas/nabd/iso3166ma/codlstp1/en_listp1.html.

Sólo se pueden definir valores para los que haya archivos de descripción en /usr/lib/locale que se puedan utilizar. Se pueden crear archivos de descripción adicionales a partir de los archivos de /usr/share/i18n usando el comando localedef. Los archivos de descripción forman parte del paquete glibc-i18ndata. Se puede crear un archivo de descripción para es_ES.UTF-8 (para el español de España) con:

 
localedef -i es_ES@euro -f UTF-8 es_ES@euro.UTF-8 
LANG=es_ES.UTF-8

Éste es el ajuste por defecto si se selecciona el español de España durante la instalación. Si selecciona otro idioma, se habilitará dicho idioma, pero UTF-8 seguirá siendo el tipo de codificación de caracteres.

LANG=es_ES.ISO-8859-1

De este modo se configura el idioma español para España con el juego de caracteres ISO-8859-1. Este juego de caracteres no admite el símbolo del euro, pero puede ser útil para los programas que no se hayan actualizado todavía para usar UTF-8. La cadena que define el conjunto de caracteres (ISO-8859-1, en este caso) la utilizan programas como Emacs.

LANG=es_ES@euro

Este ejemplo incluye explícitamente el símbolo del euro en los ajustes del idioma. En realidad, este ajuste está obsoleto porque UTF-8 incluye también el símbolo del euro. Es útil sólo para las aplicaciones que no admitan UTF-8, sino ISO-8859-15.

SuSEconfig lee las variables de /etc/sysconfig/language y escribe los cambios necesarios en /etc/SuSEconfig/profile y en /etc/SuSEconfig/csh.cshrc. /etc/profile lee el archivo /etc/SuSEconfig/profile (lo usa como fuente), mientras que /etc/csh.cshrc usa como fuente /etc/SuSEconfig/csh.cshrc. De esta forma, los ajustes están disponibles para todo el sistema.

Los usuarios pueden modificar los valores por defecto del sistema editando convenientemente el archivo ~/.bashrc. Por ejemplo, si la configuración del sistema es español de España (es_ES) pero el usuario no desea que los mensajes de los programas se muestren en este idioma, deberá incluir, por ejemplo, LC_MESSAGES=en_US para que los mensajes se muestren en inglés de Estados Unidos.

10.4.2. Configuración regional en ~/.i18n

Si no le satisfacen los valores por defecto de la configuración regional del sistema, puede cambiarlos en ~/.i18n. Las entradas de ~/.i18n sustituyen a los valores por defecto de /etc/sysconfig/language. Utilice los mismos nombres de variables sin los prefijos RC_ del espacio de nombres. Por ejemplo, emplee LANG en lugar de RC_LANG.

10.4.3. Ajustes para la compatibilidad con el idioma

Los archivos de la categoría de mensajes normalmente se almacenan sólo en el directorio de idioma correspondiente (por ejemplo, en) para tener una alternativa. Si establece LANG en en_US y el archivo de mensajes de /usr/share/locale/en_US/LC_MESSAGES no existe, se usará como alternativa /usr/share/locale/en/LC_MESSAGES.

También se puede definir una cadena alternativa por ejemplo, para el bretón (en el caso del francés) o para el gallego (en el caso del español y el portugués):

LANGUAGE="br_FR:fr_FR"

LANGUAGE="gl_ES:es_ES:pt_PT"

Si lo desea, también puede usar las variantes noruegas nynorsk y bokmål (usando no como alternativa):

LANG="nn_NO"

LANGUAGE="nn_NO:nb_NO:no"

O bien

LANG="nb_NO"

LANGUAGE="nn_NO:nb_NO:no"

En el caso del noruego, hay que tener en cuenta que LC_TIME también se trata de forma diferente.

Un problema que puede surgir es que el separador utilizado para delimitar grupos de dígitos no se reconozca correctamente. Esto ocurre si LANG está establecido sólo como un código de idioma de dos letras como, por ejemplo, de, y la definición que utiliza glibc se encuentra en /usr/share/lib/de_DE/LC_NUMERIC. En este caso, LC_NUMERIC debe configurarse como de_DE para que la definición del separador sea evidente para el sistema.

10.4.4. Información adicional

  • El GNU C Library Reference Manual (Manual de referencia sobre la biblioteca C de GNU), capítulo “Locales and Internationalization” (Configuraciones regionales e internacionalización). Se incluye en glibc-info.

  • Markus Kuhn, UTF-8 and Unicode FAQ for Unix/Linux (Preguntas frecuentes sobre Unicode y UTF-8 para Unix y Linux), en http://www.cl.cam.ac.uk/~mgk25/unicode.html.

  • Bruno Haible, Unicode-Howto (Procedimientos de Unicode): /usr/share/doc/howto/en/html/Unicode-HOWTO.html.