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_ALLCette 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>]]
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.
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.
The GNU C Library Reference Manual, chapitre
« Locales and Internationalization » ; contenu dans le paquetage
glibc-info.
Howto francophones de Guylhem-Aznar file:/usr/share/doc/howto/en/html/Francophones-HOWTO.html.
Markus Kuhn, UTF-8 and Unicode FAQ for Unix/Linux, actuellement à l'adresse suivante : http://www.cl.cam.ac.uk/~mgk25/unicode.html.
Howto Unicode de Bruno Haible en anglais file:/usr/share/doc/howto/en/html/Unicode-HOWTO.html ou en français file:/usr/share/doc/howto/fr/a-jour/html/Unicode-HOWTO.html.