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

Le fichier /etc/locale.conf ci-dessous défini certaines variables d'environnement nécessaires pour la prise en charge native des langues. Les configurer a pour résultat :

Remplacez <ll> ci-dessous par les deux lettres de la langue désirée (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ères classique pour le paramètre linguistique choisi. On peut aussi ajouter des modificateurs facultatifs comme « @euro ».

La liste des paramètre régionaux pris en charge par Glibc peut être obtenue en lançant la commande suivante :

locale -a

Les jeux de caractères peuvent aussi avoir certains alias, par exemple « ISO-8859-1 » est aussi référencé comme « iso8859-1 » et « iso88591 ». 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 un paramètre linguistique particulier. Pour déterminer le nom classique, lancez la commande suivante, où <nom du paramètre linguistique> est la sortie donnée par locale -a pour votre langue préférée (« fr_FR.iso88591 » dans notre exemple).

LC_ALL=<nom du paramètre linguistique> locale charmap

Pour le paramètre « fr_FR.iso885915 », la commande va afficher :

ISO-8859-15

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

LC_ALL=<nom du paramètre linguistique> locale language
LC_ALL=<nom du paramètre linguistique> locale charmap
LC_ALL=<nom du paramètre linguistique> locale int_curr_symbol
LC_ALL=<nom du paramètre linguistique> locale int_prefix

Les commandes ci-dessus devraient afficher la langue, l'encodage des caractères utilisé par le paramètre, 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 paramètre n'a pas été installé dans le chapitre 8 ou n'est pas prise en charge 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 le paramètre régional désiré en utilisant la commande localedef, ou en utilisant un autre paramètre. Les instructions suivantes supposent qu'il n'y a pas de tels messages d'erreur de Glibc.

Certains paquets au-delà de LFS peuvent ne pas prendre en charge le paramètre linguistique que vous avez choisi. Un exemple est la bibliothèque X (partie du système X Window), qui renvoie le message d'erreur suivant si le paramètre ne correspond pas exactement à l'un des jeux de caractères de 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ères 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 du paramètre régional. Cela peut être testé en lançant la commande locale charmap des deux paramètres. Par exemple, il faudra changer « de_DE.ISO-8859-15@euro » en « de_DE@euro » pour que ce paramètre soit reconnu par Xlib.

D'autres programmes ne vont aussi pas fonctionner correctement (mais ne vont pas nécessairement afficher un message d'erreur) si le nom du paramètre régional ne rencontre pas leurs attentes. Dans d'autres cas, rechercher comment d'autres distributions Linux prennent en charge votre paramètre régional peut fournir des informations utiles.

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

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

Remarquez 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 variable 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

Remarquez que la commande localectl ne fonctionne pas dans l'environnement chroot. Elle ne peut être utilisée qu'après avoir démarré le système LFS avec systemd.

Les paramètres « C » (par défaut) et « en_US » (recommandé pour les utilisateurs anglophones des États-Unis) sont différents. « C » utilise le jeu de caractères US-ASCII 7-bit et traite les octets avec le bit de point fort à 1 comme des caractères invalides. C'est pourquoi, par exemple, la commande ls les remplace par des points d'interrogation sous ce paramètre. De plus, 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 le paramètre régional « C » que si vous êtes sûr que vous n'aurez jamais besoins de caractère 8 bits.