10.4. Configuración en función del idioma y el país

SUSE LINUX presenta un alto nivel de internacionalización y puede adaptarse a las necesidades locales de forma muy flexible. En otras palabras, la internacionalización (I18N) permite implementar extensiones locales (L10N). Las abreviaturas I18N y L10N sustituyen a los términos internationalization y localization y están formadas por la letra inicial y final de cada término así como por el número de caracteres entre ambas.

La configuración se realiza mediante las variables LC_ que se definen en el fichero /etc/sysconfig/language. Aparte del idioma para la interfaz gráfica de los programas y sus mensajes (native language support), se configuran también las categorías moneda, cifras, fecha y hora, el tipo de caracteres, el tipo de mensajes y el criterio de ordenar. Todas estas categorías se pueden definir dentro del archivo language mediante una variable individual o de forma indirecta mediante una variable de un nivel más alto (véase la página del manual 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 determinan las categorías arriba mencionadas. A continuación se detalla el significado de las distintas variables.

RC_LANG

En caso de estar definida, esta variable sobreescribe los valores de las variables mencionadas arriba.

RC_LANG

Si no se define ninguna de las variables arriba mencionadas, esta sirve de definición de reserva (fallback). SUSE LINUX sólo define por defecto RC_LANG. De esta forma es más fácil para el usuario introducir valores propios.

ROOT_USES_LANG

Una variable booleana de valor yes o no. Si tiene el valor no, root siempre trabaja en el entorno POSIX.

Las demás variables se determinan mediante el editor sysconfig de YaST. El valor de estas variables contiene la identificación del idioma (language code), la del país o territorio (country code), el conjunto de caracteres (encoding) y la opción (modifier). Todas estas indicaciones se unen mediante caracteres especiales:

  LANG=<language>[[_<COUNTRY>].<Encoding>[@<Modifier>]]

10.4.1. Algunos ejemplos

Idioma y país se deben definir juntos. La indicación del idioma sigue la norma ISO 639 (http://www.evertype.com/egt/standards/iso639/iso639-1-en.html y http://www.loc.gov/standards/iso639-2/) y los códigos de país están definidos en la norma ISO 3166 (http://www.din.de/gremien/nas/nabd/iso3166ma/codlstp1/en_listp1.html). Sólo se puede seleccionar valores que encuentran su homólogo en un archivo de descripción dentro del directorio /var/lib/locale. Es posible crear archivos de descripción a partir de los archivos /usr/share/i18n usando localedef; los archivos de descripción forman parte del paquete glibc-i18ndata. Por ejemplo, un archivo de descripción para es_ES@euro.UTF-8 se crea mediante el comando:

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

Esta es la opción predeterminada cuando se instala en castellano. Si la instalación se realiza en otro idioma, UTF-8 sigue siendo el juego de caracteres seleccionado y el otro idioma se adopta para el sistema.

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 aún no incorpora el símbolo del Euro pero sigue siendo necesario para los programas que aún no han sido adaptados a UTF-8. Por ejemplo, el programa Emacs es uno de los que lee la opción de configuración del juego de caracteres (aquí ISO-8859-1).

LANG=es_ES@euro

El ejemplo superior incluye explícitamente el signo del euro en un juego de caracteres. En sentido estricto, esta opción resulta obsoleta ya que UTF-8 comprende también el signo del euro. No obstante, puede serle de utilidad si una aplicación no soporta UTF-8 sino, por ejemplo, ISO-8859-15.

SuSEconfig lee las variables de /etc/sysconfig/language y escribe los valores en los archivos /etc/SuSEconfig/profile y /etc/SuSEconfig/csh.cshrc. /etc/profile lee el archivo /etc/SuSEconfig/profile (lo usa como fuente) y /etc/csh.cshrc lee /etc/SuSEconfig/csh.cshrc. De esta forma la configuración está disponible para todo el sistema.

La configuración del sistema puede ser modificada por los usuarios con el archivo de configuración individual de usuario ~/.bashrc. Por ejemplo, cuando la configuración del sistema es es_ES y el usuario prefiere los mensajes en inglés, es posible modificarlo mediante: LC_MESSAGES=en_US

10.4.2. Configuración del soporte de idioma

Los archivos de la categoría mensajes normalmente sólo se encuentran dentro del directorio de idioma (por ejemplo en) para tener una solución de reserva. Por ejemplo cuando el valor de LANG sea en_US y el archivo de mensajes en /usr/share/locale/en_US/LC_MESSAGES no exista, se recurrirá al archivo /usr/share/locale/en/LC_MESSAGES para los mensajes.

Una cadena de soluciones de reserva puede definirse, por ejemplo, para bretón → francés o para gallego → español → portugués:

LANGUAGE="br_FR:fr_FR"

LANGUAGE="gl_ES:es_ES:pt_PT"

O para – dependiendo de las preferencias – cambiar a las variantes noruegas nyorsk o bien bokmål (con no como alternativa):

LANG="nn_NO"

LANGUAGE="nn_NO:nb_NO:no"

o bien

LANG="nb_NO"

LANGUAGE="nb_NO:nn_NO:no"

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

10.4.2.1. Posibles problemas

  • En cadenas de números no se reconoce el punto como separador de miles. Probablemente el valor de LANG sea es. Como la descripción que usa la glibc se encuentra en /usr/share/lib/es_ES/LC_NUMERIC, LC_NUMERIC debe tener por ejemplo el valor es_ES.

10.4.2.2. Información adicional


SUSE LINUX Manual de administración 9.3