10.4. Paramètres spécifiques aux langues et aux pays

SUSE Linux est très largement internationalisé et peut être modifié de façon très souple en fonction des besoins locaux. En d'autres termes, l'internationalisation (I18N) permet des localisations (L10N) spécifiques. Les abréviations I18N et L10N sont formées des première et dernière lettre du mot abrégé, avec le nombre de lettres omises entre les deux.

Les réglages sont effectués à l'aide de variables LC_ définies dans le fichier /etc/sysconfig/language. Cela ne concerne pas seulement la prise en charge de la langue maternelle, mais aussi les catégories messages (langue), jeu de caractères, ordre de tri, date et heure, nombres et monnaie. Chacune de ces catégories peut être définie directement avec sa propre variable ou indirectement avec une variable maître dans le fichier language (reportez-vous à la page de manuel locale).

RC_LC_MESSAGES, RC_LC_CTYPE, RC_LC_COLLATE, RC_LC_TIME, RC_LC_NUMERIC, RC_LC_MONETARY

Ces variables, qui sont transmises au shell sans le préfixe RC_, représentent les catégories répertoriées. Les profils de shell concernés sont répertoriés ci-dessous. Le paramètre en cours peut être affiché avec la commande locale.

RC_LC_ALL

Si elle est définie, cette variable remplace les valeurs des variables mentionnées précédemment.

RC_LANG

Si aucune des variables précédentes n'est définie, celle-ci est utilisée comme solution de secours. Par défaut, SUSE Linux définit uniquement RC_LANG. Ainsi, les utilisateurs peuvent saisir plus facilement leurs propres valeurs.

ROOT_USES_LANG

Variable yes ou no. Si elle est réglée sur no, root travaille toujours dans l'environnement POSIX.

Les variables peuvent être définies à l'aide de l'éditeur sysconfig de YaST (reportez-vous à la Section 8.3.1, « Modification de la configuration système à l'aide de l'éditeur sysconfig de YaST »). Leur valeur contient le code de la langue, celui du pays, le codage et le modificateur. Les composants individuels sont séparés par des caractères spéciaux :

 
 LANG=<langue>[[_<PAYS>].<codage>[@<modificateur>]] 

10.4.1. Quelques exemples

Il est conseillé de toujours définir les codes de langue et de pays ensemble. Les paramètres de langue sont conformes à la norme ISO 639, disponible aux adresses http://www.evertype.com/standards/iso639/iso639-en.html et http://www.loc.gov/standards/iso639-2/. Les codes de pays sont conformes à la norme ISO 3166, disponible à l'adresse http://www.din.de/gremien/nas/nabd/iso3166ma/codlstp1/en_listp1.html.

Il ne serait pas logique de définir des valeurs pour lesquelles vous n'avez pas de fichiers de description utilisables dans /usr/lib/locale. Il est possible de créer des fichiers de description à partir des fichiers de /usr/share/i18n, à l'aide de la commande localedef. Les fichiers de description font partie du paquetage glibc-i18ndata. Un fichier de description pour en_US.UTF-8 (anglais américain) peut être créé de la manière suivante :

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

Cela est le réglage par défaut si vous avez sélectionné l'anglais américain au cours de l'installation. Si vous avez sélectionné une autre langue, celle-ci est activée avec le codage de caractères UTF-8.

LANG=fr_FR.ISO-8859-1

Ce paramètre règle la langue sur l'anglais, le pays sur États-Unis et le jeu de caractères sur ISO-8859-1. Ce jeu de caractères ne comprend pas le symbole de l'Euro, mais peut être utile pour les programmes qui ne sont pas encore compatibles avec UTF-8. La chaîne qui définit le jeu de caractères (ici, ISO-8859-1) est utilisée par des programmes comme Emacs.

LANG=en_IE@euro

L'exemple ci-dessus inclut explicitement le signe Euro dans le paramètre de langue. En principe, ce réglage est obsolète car UTF-8 couvre également le signe Euro. Il n'est utile que pour les applications qui ne supportent pas UTF-8, mais ISO‑8859‑15.

SuSEconfig lit les variables dans /etc/sysconfig/language et écrit les modifications requises dans /etc/SuSEconfig/profile et /etc/SuSEconfig/csh.cshrc. /etc/SuSEconfig/profile est lu ou émis par /etc/profile. /etc/SuSEconfig/csh.cshrc est émis par /etc/csh.cshrc. Ces opérations rendent les paramètres disponibles dans l'ensemble du système.

Les utilisateurs peuvent remplacer les paramètres par défaut du système en modifiant leur fichier ~/.bashrc. Par exemple, si vous ne souhaitez pas utiliser le réglage système global en_US pour les messages des programmes, ajoutez LC_MESSAGES=es_ES pour afficher les messages en espagnol par exemple.

10.4.2. Paramètres régionaux dans ~/.i18n

Si vous n'êtes pas satisfait des paramètres par défaut de votre système, vous pouvez les modifier dans ~/.i18n. Les entrées de ~/.i18n remplacent les paramètres par défaut de votre système de /etc/sysconfig/language. Utilisez les mêmes noms de variables sans les préfixes d'espaces de noms RC_. Par exemple, utilisez LANG au lieu de RC_LANG.

10.4.3. Paramètres de prise en charge des langues

En règle générale, les fichiers de la catégorie messages sont uniquement stockés dans le répertoire de la langue correspondante (par exemple en) pour avoir une solution de secours. Si vous réglez LANG sur en_US et qu'il n'existe pas de fichier de messages dans /usr/share/locale/en_US/LC_MESSAGES, le système utilise /usr/share/locale/en/LC_MESSAGES.

Une chaîne de repli peut également être définie, par exemple du breton au français ou du galicien à l'espagnol, puis au portugais :

LANGUAGE="br_FR:fr_FR"

LANGUAGE="gl_ES:es_ES:pt_PT"

Le cas échéant, il est possible d'utiliser les variantes de norvégien Nynorsk et Bokmål (avec une possibilité de repli sur no) :

LANG="nn_NO"

LANGUAGE="nn_NO:nb_NO:no"

ou

LANG="nb_NO"

LANGUAGE="nb_NO:nn_NO:no"

Notez qu'en norvégien, LC_TIME est aussi traité différemment.

Un problème peut survenir si un séparateur utilisé pour délimiter des groupes de chiffres est mal reconnu, par exemple si LANG est réglé sur un code composé de seulement deux lettres (par exemple, de), tandis que le fichier de définition utilisé par glibc se situe dans un chemin du type /usr/share/lib/de_DE/LC_NUMERIC. Dans ce cas, il faut régler LC_NUMERIC sur de_DE pour rendre la définition de séparateur visible par le système.

10.4.4. Pour plus d'informations

  • The GNU C Library Reference Manual, chapitre « Locales and Internationalization ». Inclus dans glibc-info.

  • Markus Kuhn, UTF-8 and Unicode FAQ for Unix/Linux, actuellement à l'adresse http://www.cl.cam.ac.uk/~mgk25/unicode.html.

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