Le /etc/locale.conf
ci-dessous défini
certaines variables nécessaires pour le support de la langue native.
Les configurer à pour résultat :
La sortie des programmes est traduite dans le langage natif
Le classement correct des caractères dans les lettres, chiffres et autres classes. Cela est nécessaire pour bash pour accepter correctement les caractères non-ASCII dans les locales non anglaises
Le classement alphabétique correct pour les autres pays
Taille de papier par défaut appropriée
Le formatage correct de la monnaie, du temps et de la date
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"
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.3/introduction/locale-issues.html