Certaines variables d'environnement sont nécessaires pour la prise en charge des langues naturelles. Les configurer a pour résultat :
La sortie des programmes est traduite dans votre langue maternelle
Le classement correct des caractères en lettres, chiffres et autres classes. Cela est nécessaire pour bash pour accepter correctement les caractères non-ASCII pour les paramètres linguistiques non anglais
Le tri alphabétique correct pour les autres pays
La 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 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 exécutant 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 ci-dessus affichera :
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 devriez soit installer le paramètre linguistique désiré en utilisant la commande localedef, soit utiliser un autre paramètre. Les instructions suivantes supposent que vous n'avez pas reçu ces messages d'erreur de Glibc.
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
Le programme shell /bin/bash (à partir de maintenant
appelé « le
shell ») utilise un ensemble de fichiers de
démarrage pour créer l'environnement dans lequel il s'exécute. Chaque
fichier a un but précis et peut affecter différemment les
environnements de connexion et interactifs. Les fichiers dans le
répertoire /etc
fournissent des
paramètres génériques. Si un fichier équivalent existe dans le
répertoire personnel, il peut remplacer les paramètres génériques.
Un shell de connexion interactif est démarré après une connexion
réussie, avec /bin/login, en lisant le fichier
/etc/passwd
. Un shell interactif sans
connexion est démarré par la ligne de commande (p. ex. [invite]$
/bin/bash). Un shell non-interactif
est en général présent quand un script shell est lancé. Il n'est pas
interactif car il traite un script et n'attend pas d'entrées
utilisateur entre les commandes.
Les shells de connexion ne sont pas affectés par
les paramètres dans /etc/locale.conf
. Créez le fichier
/etc/profile
pour
lire les paramètres linguistiques de /etc/locale.conf
et les exporter, mais
indiquez le paramètre C.UTF-8
à la place
si le shell tourne sous la console Linux (pour éviter que les
programmes n'affichent des caractères que la console Linux ne peut
pas afficher) :
cat > /etc/profile << "EOF"
# Début de /etc/profile
for i in $(locale); do
unset ${i%=*}
done
if [[ "$TERM" = linux ]]; then
export LANG=C.UTF-8
else
source /etc/locale.conf
for i in $(locale); do
key=${i%=*}
if [[ -v $key ]]; then
export $key
fi
done
fi
# Fin de /etc/profile
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"
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.