11.8. Configuration des informations pour la locale

Le fichier /etc/locale.conf ci-dessous définit certaines variables d'environnement nécessaires au support de la langue. En les réglant correctement, on obtient que :

Remplacez [II] ci-dessous avec le code à deux lettres de la langue souhaitée (par exemple « fr ») et [CC] par le code à deux lettres pour le pays approprié (par exemple « FR » ou « CA »). [charmap] devrait être remplacé par la table de caractères canonique pour la locale choisie. Des modificateurs facultatifs comme « @euro » peuvent aussi être présents.

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

locale -a

Les locales peuvent avoir un certain nombre de synonymes, par exemple « ISO-8859-1 » est aussi appelé « ios8859-1 » et « iso88591 ». Certaines applications ne peuvent gérer les divers synonymes correctement, donc il est plus sûr de choisir le nom canonique pour une locale particulière. Pour déterminer le nom canonique, lancez la commande suivante, où [local name] est la sortie donnée par locale -a pour votre locale préférée (« fr_FR.utf8 » par exemple).

LC_ALL=[locale name] locale charmap

Pour la locale « fr_FR.utf8 », la commande ci-dessus affichera :

UTF-8

Cela résulte en un paramètre de local final de « fr_FR.UTF-8 ». Il est important que la locale trouvée en utilisant l'heuristique ci-dessus soit testée avant d'être ajoutée à /etc/locale.conf :

LC_ALL=[locale name] locale territory
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 afficher le nom du langage, l'encodage des caractères utilisées, la monnaie locale et le préfixe à ajouter avant le numéro de téléphone pour appeler le pays. Si l'une de ces commandes échoue avec un message similaire à celui ci-dessous, cela signifie que votre locale n'a soit pas été installée au chapitre 10 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 devriez soit installer la locale désirée avec la commande localedef ou considérer de choisir une locale différente. Les instructions supposent maintenant qu'il n'y a plus de message d'erreur de la part de Glibc.

Certains paquets au delà de CLFS peuvent aussi manquer un support pour votre locale. Un exemple est la bibliohèque X (qui fait partie du système de fenêtrage X) qui sort le message d'erreur suivant :

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

Parfois il est possible de corriger cela en supprimant la partie du jeu de caractères dans la spécification de la locale, tant que cela ne change pas le jeu de caractères que Glibc asoscie à la locale (cela peut être vérifié en lançant la commande locale charmap dans les deux locales). Par exemple, on devrait changer « de_DE.ISO-8859-15@euro » en « de_DE@euro » pour que cette locale soit reconnue par Xlib.

D'autres paquets peuvent aussi fonctionner incorrectement (mais peuvent ne pas afficher de message d'erreur) si le nom de la locale ne correspond pas à leur attente. Dans ce cas, regardez commentles autres distributions Linux supportent votre locale pour avoir des informations utiles.

Une fois que les paramètres de locale appropriés ont été déterminés, créez le fichier /etc/locale.conf :

cat > /etc/locale.conf << "EOF"
# Begin /etc/locale.conf

LANG=[ll]_[CC].[charmap][@modifiers]

# End /etc/locale.conf
EOF

Remarquez que vous pouvez modifier /etc/locale.conf avec l'utilitaire systemd localctl. Pour utiliser localectl pour l'exemple ci-dessus, lancez :

localectl set-locale LANG="[ll]_[CC][charmap][@modifiers]"

Vous pouvez aussi spécifier d'autres variables d'environnement spécifiques à la langue comme LANG, LC_CTYPE, LC_NUMERIC ou toute autre variable d'environnement de la sortie de locale. Séparez-les simplement avec un espace. Un exemple où LANG est défini comme en_US.UTF-8 mais LC_CTYPE est définie comme en_US est :

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

Note

Veuillez remarquer que la commande localectl peut être utilisée uniquement sur un système démarré avec systemd.

Les paramètres pour le clavier, la police et les variables d'environment liées à la locale sont les seules étapes de régionalisation requises pour supporter les locales qui utilisent un encodage simple sur un octet et écrites de gauche à droite. l'UTF-8 a été testé sur les locales anglaises, françaises, allemandes, italiennes et espagnoles. Les autres locales n'ont pas été testées. Si vous trouvez un problème avec une autre locale, merci d'ouvrir un ticket sur le système Trac.

Certaines locales requièrent des programmes supplémentaires. CLFS ne supportera pas ces locales dans le livre. Nous parlons du support de ces locales dans http://cblfs.clfs.org/.