10.4. Adaptations régionales et linguistiques

SUSE LINUX est très largement internationalisé et s'adapte avec souplesse aux contraintes locales. L'internationalisation (I18N) permet des localisations dans des langues particulières (L10N). Les abréviations I18N et L10N signifient respectivement internationalisation et localisation : on prend l'initiale et la dernière lettre et on fait figurer entre elles le nombre de lettres omises.

Les réglages se font au moyen des variables LC_ définies dans le fichier /etc/sysconfig/language. Il ne s'agit pas seulement de régler la prise en charge globale de la langue, mais de régler individuellement les catégories suivantes : les messages (langue), les jeux de caractères, l'ordre de classement, les date et heure, les nombres et la monnaie. Chacune de ces catégories peut être définie soit de manière ciblée grâce à une variable propre soit indirectement grâce à une variable principale dans le fichier language (voir la page de manuel man locale).

RC_LC_MESSAGES, RC_LC_CTYPE, RC_LC_COLLATE, RC_LC_TIME, RC_LC_NUMERIC, RC_LC_MONETARY

Ces variables sont passées à l'interpréteur de commandes sans le préfixe RC_ et définissent les catégories nommées plus haut. Les fichiers concernés sont énumérés ci-après. Vous pouvez afficher le réglage courant grâce à la commande locale.

RC_LC_ALL

Cette variable écrase, si elle a été initialisée, les valeurs des variables de la liste.

RC_LANG

Si aucune des variables nommées plus haut n'a été initialisée, on se rabat sur cette valeur. Par défaut, SUSE LINUX ne définit que RC_LANG ; ainsi, il est plus simple pour l'utilisateur de saisir ses propres valeurs.

ROOT_USES_LANG

Une variable binaire yes ou no. Si elle vaut no, root travaille toujours dans l'environnement POSIX.

Les variables peuvent être réglées grâce à l'éditeur sysconfig de YaST. La valeur d'une telle variable est composée de l'indication du code de la langue (language code), du pays ou du territoire (country code), de l'encodade des caractères (encoding) et du modificateur (modifier). Les différentes indications sont séparées par des caractères spéciaux :

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

10.4.1. Quelques exemples

Il est important de toujours définir conjointement la langue et le pays. Le code de langue suit le standard ISO 639 (http://www.evertype.com/standards/iso639/iso639-en.html et http://www.loc.gov/standards/iso639-2/). Les codes de pays sont définis dans la norme ISO 3166 (voir http://www.din.de/gremien/nas/nabd/iso3166ma/codlstp1/en_listp1.html). Naturellement, il ne faut choisir que des valeurs pour lesquelles il existe des fichiers de description utilisables dans /usr/lib/locale. On peut générer de nouveaux fichiers de description à l'aide de localedef sur la base des fichiers contenus dans /usr/share/i18n ; les fichiers de description font partie du paquetage glibc-i18ndata. On peut créer un fichier de description pour fr_FR.UTF-8 (pour le français et la France) avec :

localedef -i fr_FR -f UTF-8 fr_FR.UTF-8
LANG=fr_FR.UTF-8

Il s'agit de la configuration par défaut lorsque l'on effectue l'installation en français. Si une autre langue est sélectionnée pour l'installation, l'encodage des caractères restera UTF-8, mais la langue du système sera celle de l'installation.

LANG=fr_FR.ISO-8859-1

C'est avec cette commande qu'on associe à la langue française le jeu de caractères ISO-8859-1. Ce jeu de caractères ne comprend pas le caractère euro. On l'utilise toutefois lorsqu'un logiciel n'a pas été adapté pour prendre en charge l'encodage UTF-8. La chaîne qui définit le jeu de caractère (ISO-8859-1 dans ce cas) est alors évaluée par des programmes tels que Emacs.

LANG=fr_FR@euro

Cet exemple inclut explicitement le signe euro. À strictement parler, cette sélection est maintenant inutile car UTF-8 prend également en compte le symbole euro. Elle se révèle utile uniquement lorsque votre application ne prend pas en charge UTF-8 mais ISO-8859-15.

SuSEconfig lit les variables de /etc/sysconfig/language et écrit les changement nécessaires dans /etc/SuSEconfig/profile et /etc/SuSEconfig/csh.cshrc. /etc/SuSEconfig/profile est lu par /etc/profile et /etc/SuSEconfig/csh.cshrc par /etc/csh.cshrc. De cette manière, les réglages sont disponibles pour tout le système.

Les utilisateurs peuvent écraser les réglages par défaut du système dans ~/.bashrc. Donc, dans le cas où le réglage global est fr_FR, l'utilisateur peut, en incluant LC_MESSAGES=es_ES obtenir tout de même les messages des programmes en anglais.

10.4.2. Paramètres pour la prise en charge de la langue

Les fichiers de la catégorie Messages se trouvent en général uniquement dans le répertoire propre à la langue (par exemple fr), afin d'avoir une solution de repli. Donc, si l'on règle LANG sur fr_CA alors que le fichier message n'existe pas dans /usr/share/locale/fr_CA/LC_MESSAGES, les programmes se rabattent sur /usr/share/locale/fr/LC_MESSAGES.

On peut également définir une chaîne de replis successifs par exemple : de breton vers français ou de galicien vers espagnol puis vers portugais :

LANGUAGE="br_FR:fr_FR"

LANGUAGE="gl_ES:es_ES:pt_PT"

On peut également utiliser les variantes norvégiennes nynorsk et bokmål (avec un repli supplémentaire sur no) :

LANG="nn_NO"

LANGUAGE="nn_NO:nb_NO:no"

ou

LANG="nb_NO"

LANGUAGE="nb_NO:nn_NO:no"

Pour ce qui est du norvégien, il faut également tenir compte du fait que LC_TIME est traité différemment.

Le point marquant les milliers n'est pas reconnu : LANG est probablement réglé par exemple sur fr. Comme la description à laquelle la bibliothèque glibc fait appel se trouve dans /usr/share/lib/fr_FR/LC_NUMERIC, LC_NUMERIC devrait valoir par exemple fr_FR.

10.4.3. Informations complémentaires


SUSE LINUX Guide de l'administrateur 9.2