7.7. Configuration des paramètres régionaux du système

Le /etc/locale.conf ci-dessous défini certaines variables nécessaires pour le support de la langue native. Les configurer à pour résultat :

Remplacez <ll> ci-dessous par les deux lettres du langage désiré (par exemple « fr ») et remplacez <CC> par les deux lettres du pays approprié (par exemple « FR »). <charmap> doit être remplacé par la table de caractère classique pour votre locale choisie. Des modificateurs optionnels comme « @euro » peuvent aussi être présents.

La liste des locales supportée par Glibc peut être obtenue en lançant la commande suivante :

locale -a

Les tables de caractères peuvent aussi avoir certains alias, par exemple « ISO-8859-15 » est aussi référencé comme « iso8859-15 » et « iso885915 ». Certaines applications ne peuvent pas gérer les différents synonymes (il est par exemple requis que « UTF-8 » soit écrit « UTF-8 » et pas « utf8 »), il est donc plus sur de choisir le nom classique pour une locale particulière. Pour déterminer le nom classique, lancez la commande suivante, où <locale name> est la sortie donnée par locale -a pour votre locale préférée (« fr_FR.iso885915 » dans notre exemple).

LC_ALL=<locale name> locale charmap

Pour la région « fr_FR.iso885915 », la commande va renvoyer :

ISO-8859-15

Cela résulte en un paramètre de régionalisation final de « fr_FR.ISO-8859-15 ». Il est important que la locale trouvée en utilistant la syntaxe précédente soit testée avant d'être ajoutée aux fichiers de démarage de bash :

LC_ALL=<locale name> locale language
LC_ALL=<locale name> locale charmap
LC_ALL=<locale name> locale int_curr_symbol
LC_ALL=<locale name> locale int_prefix

Les commandes ci-dessus devraient imprimer les langages, l'encodage des caractères utilisé par la locale, la monnaie locale ainsi que le préfixe de téléphone à composer afin d'entrer dans le pays. Si une de ces commandes précédentes échoue, cela signifie que votre locale n'a pas étée installée dans le chapitre 6 ou n'est pas supportée par l'installation par défaut de Glibc.

locale: Cannot set LC_* to default locale: No such file or directory

Si cela arrive, vous devez soit installer la locale désirée en utilisant la commande localedef, ou en utilisant une autre locale. Les instructions suivantes supposent qu'il n'y a pas de tels message d'erreur de Glibc.

Certains paquets au-delà de LFS peuvent manquer de support pour la locale que vous avez choisie. Un exemple est la bibliothèque X (partie du système X Window), qui retourne les messages suivant si la locale ou que le nom de jeu de caractères ne correspond pas exactement à ses fichiers internes :

Warning: locale not supported by Xlib, locale set to C

Dans plusieurs cas Xlib s'attend à ce que le jeu de caractère soit inscrit en notation majuscule avec les tirets classiques. Par exemple « ISO-8859-1 » plutôt que « iso88591 ». Il est aussi possible de trouver la spécification appropriée en retirant la partie correspondant au jeu de caractères de la spécification de la locale. Cela peut être testé en lançant la commande locale charmap des deux locales. Par exemple, il faudra changer « de_DE.ISO-8859-15@euro » à « de_DE@euro » pour que cette locale soit reconnue pas Xlib.

D'autres programmes ne vont aussi pas fonctionner correctement (mais ne vont pas nécessairement afficher un message d'erreur) si le nom de la locale ne rencontre pas leurs attentes. Dans d'autres cas, rechercher comment d'autres distributions Linux supportent votre locale peut fournir des informations utiles.

Une fois que les bonnes configurations de locales ont été effectuées, créez le fichier /etc/locale.conf :

cat > /etc/locale.conf << "EOF"
LANG=<ll>_<CC>.<charmap><@modifiers>
EOF

Notez que vous devez modifier /etc/locale.conf avec l'utilitaire systemd localectl. Pour utiliser localectl avec l'exemple précédent, lancez :

localectl set-locale LANG="<ll>_<CC>.<charmap><@modifiers>"

Vous pouvez aussi spécifier d'autres variables d'environnement comme LANG, LC_CTYPE, LC_NUMERIC ou n'importe quel autre varable de la sortie de locale. Un exemple où LANG est définie à en_US.UTF-8 mais LC_CTYPE est défini juste à en_US est :

localectl set-locale LANG="en_US.UTF-8" LC_CTYPE="en_US"
[Note]

Note

Notez que la commande localectl ne peut-être lancée que sur un système lancé avec systemd.

Les locales « C » (défaut) et « en_US » (recommandée pour les utilisateurs anglophones des états-Unis) sont différentes. « C » utilise le jeu de caractères US-ASCII 7-bit et traite les octets avec le bit de point fort à 1 comme caractères invalides. C'est pourquoi, par exemple, la commande ls les remplace par des points d'interrogation dans cette locale. En outre, les messages contenant ces caractères envoyés avec Mutt ou Pine ne sont pas conformes aux RFC (le jeu de caractères dans le mail sortant est indiqué comme « unknown 8-bit »). Vous ne pouvez donc utiliser la locale « C » seulement si vous êtes sûr que vous n'aurez jamais besoins de caractère 8 bits.

Les locales basées sur UTF-8 ne sont pas bien supportées par beaucoup de programmes. Le travail progresse pour documenter et si possible résoudre de tels problèmes, allez voir http://fr.linuxfromscratch.org/blfs8.2/introduction/locale-issues.html