Locale (Français)
Les Locales, aussi appelés paramètres régionaux, sont utilisées par glibc et d'autres programmes ou bibliothèques tenant compte des spécificités locales pour rendre le texte, afficher correctement les valeurs monétaires régionales, les formats d'heure et de date, les idiosyncrasies alphabétiques et d'autres normes spécifiques locales.
Génération de locales
Les noms de locales sont généralement de la forme language[_territory][. codeset][@modifier]
, où language est un code de langage ISO 639, territory est un code de pays ISO 3166, et codeset est un jeu de caractères ou un identifiant d'encodage comme ISO-8859-1 ou UTF-8. Consultez setlocale(3).
Pour obtenir une liste des locales activées, exécutez :
$ locale -a
Avant qu'une locale puisse être activée sur le système, elle doit être générée. Ceci peut être réalisé en décommentant les entrées applicables dans /etc/locale.gen
, et en exécutant locale-gen. De manière équivalente, commenter les entrées désactive leurs locales respectives. Lorsque vous effectuez des modifications, tenez compte des localisations requises par les autres utilisateurs du système, ainsi que des #Variables spécifiques.
Par exemple, décommentez en_US.UTF-8 UTF-8
pour l'anglais américain :
/etc/locale.gen
... #fr_SG ISO-8859-1 fr_US.UTF-8 UTF-8 #fr_US ISO-8859-1 ...
Sauvegardez le fichier, et générez la locale :
# locale-gen
Définition de la locale
Pour afficher la locale actuellement définie et les paramètres environnementaux associés, tapez :
$ locale
La locale à utiliser, choisie parmi celles générées précédemment, est définie dans les fichiers locale.conf
. Chacun de ces fichiers doit contenir une liste d'affectations de variables d'environnement séparées par des nouvelles lignes, ayant le même format que celui fourni par locale.
Pour lister les locales disponibles qui ont été précédemment générées, exécutez :
$ localedef --list-archive
Alternativement, en utilisant localectl(1) :
$ localectl list-locales
Définir la locale système
Pour définir la locale système, écrivez la variable LANG
dans /etc/locale.conf
, où en_US.UTF-8
appartient à la première colonne d'une entrée non commentée dans /etc/locale.gen
:
/etc/locale.conf
LANG=en_US.UTF-8
Alternativement, exécutez :
# localectl set-locale LANG=en_US.UTF-8
Consultez #Variables et locale.conf(5) pour plus de détails.
Remplacer la locale du système par session utilisateur
La locale système peut être remplacée dans chaque session utilisateur en créant ou en modifiant $XDG_CONFIG_HOME/locale.conf
. (généralement ~/.config/locale.conf
).
La priorité de ces fichiers locale.conf
est définie dans /etc/profile.d/locale.sh
.
- Cela peut également permettre de conserver les journaux dans
/var/log/
en anglais tout en utilisant la langue locale dans l'environnement utilisateur. - Vous pouvez créer un fichier
/etc/skel/.config/locale.conf
de sorte que tous les nouveaux utilisateurs ajoutés à l'aide de useradd et de l'option-m
verront~/.config/locale.conf
automatiquement générés.
Rendre les changements de locale immédiats
Une fois que les fichiers locale.conf
du système et de l'utilisateur ont été créés ou modifiés, leurs nouvelles valeurs prendront effet pour les nouvelles sessions à la connexion. Pour que l'environnement actuel utilise les nouveaux paramètres, il suffit d'annuler l'option LANG
et de sourcer /etc/profile.d/locale.sh
:
$ unset LANG $ source /etc/profile.d/locale.sh
LANG
doit d'abord être désactivée, sinon locale.sh
ne mettra pas à jour les valeurs de locale.conf
. Seules les variables nouvelles et modifiées seront mises à jour ; les variables supprimées de locale.conf
seront toujours définies dans la session. Autres utilisations
Les variables de locale peuvent également être définies avec les méthodes standard comme expliqué dans les variables d'environnement.
Par exemple, afin de tester ou de déboguer une application particulière pendant le développement, elle peut être lancée avec quelque chose comme :
$ LANG=C ./my_application.sh
De même, pour définir la locale de tous les processus exécutés à partir du shell actuel (par exemple, lors de l'installation du système) :
$ export LANG=C
Variables
Les fichiers locale.conf
prennent en charge les variables d'environnement suivantes.
- LANG
- LANGUAGE
LC_ADDRESS
- LC_COLLATE
LC_CTYPE
LC_IDENTIFICATION
LC_MEASUREMENT
LC_MESSAGES
LC_MONETARY
LC_NAME
LC_NUMERIC
LC_PAPER
LC_TELEPHONE
- LC_TIME
La signification complète des variables LC_*
ci-dessus se trouve sur la page de manuel locale(7), tandis que les détails de leur définition sont décrits sur locale(5).
LANG : locale par défaut
La locale définie pour cette variable sera utilisée pour toutes les variables LC_*
qui ne sont pas explicitement définies.
LANG
sur es_ES.UTF-8
et la variable LC_MESSAGES
(pour la traduction des messages de l'interface utilisateur) à en_US.UTF-8
.LANGUAGE : locales de repli
Les programmes qui utilisent gettext pour les traductions respectent l'option LANGUAGE
en plus des variables habituelles. Cela permet aux utilisateurs de spécifier une liste de locales qui seront utilisées dans cet ordre. Si une traduction pour la locale préférée n'est pas disponible, une autre d'une locale similaire sera utilisée à la place de la locale par défaut. Par exemple, un utilisateur australien peut vouloir utiliser l'orthographe britannique plutôt que l'orthographe américaine :
locale.conf
LANG=fr_AU.UTF-8 LANGUAGE=fr_AU:en_GB:en
en
ou en_US
, mais en font la locale par défaut, qui est C
. Si dans LANGUAGE
une locale non anglaise est placée après l'anglais, par exemple LANGUAGE=en_US:en:es_ES
, les applications peuvent choisir la locale secondaire malgré la disponibilité de chaînes anglaises. [3] La solution est de toujours placer explicitement la locale C
après l'anglais. Par exemple, LANGUAGE=en_US:en:C:es_ES
.LC_TIME : format de date et d'heure
Si LC_TIME
est défini sur en_US.UTF-8
, par exemple, le format de la date sera "MM/JJ/AAAA". Si vous souhaitez utiliser le format de date ISO 8601 "YYYY-MM-DD", utilisez :
locale.conf
LC_TIME=fr_DK.UTF-8
glibc 2.29 a corrigé un bogue, fr_US.UTF-8
a commencé à s'afficher au format 12 heures, comme prévu. Si vous souhaitez utiliser le format 24 heures, utilisez LC_TIME=fr_GB.UTF-8
.
LC_TIME
avec les versions 57 à 84 (Bug 1429578).LC_COLLATE : collation
Cette variable régit les règles de collation utilisées pour le tri et les expressions régulières.
En donnant à cette variable la valeur C
, la commande ls peut par exemple trier les fichiers à points en premier, puis les noms de fichiers en majuscules et en minuscules :
locale.conf
LC_COLLATE=C
Consultez également [4].
Pour contourner les problèmes potentiels, Arch avait l'habitude de définir LC_COLLATE=C
dans /etc/profile
, mais cette méthode est maintenant dépréciée.
LC_ALL : dépannage
La locale définie pour cette variable remplacera toujours LANG
et toutes les autres variables LC_*
, qu'elles soient définies ou non. Si LC_ALL
est défini sur C
, il remplacera également LANGUAGE
.
LC_ALL
est la seule variable LC_*
qui ne peut pas être définie dans les fichiers locale.conf
: elle est destinée à être utilisée uniquement à des fins de test ou de dépannage, par exemple dans /etc/profile
.
LC_ALL=C.UTF-8
, contrairement à LC_ALL=C
, ne remplace pas LANGUAGE
. Voir le bug de glibc n°16621 et le bug de gettext n°62815.Dépannage
Mon terminal ne prend pas en charge UTF-8
Voici une liste de quelques terminaux (pas tous) qui prennent en charge UTF-8 :
- gnustep-terminal
- konsole
- mlterm
- rxvt-unicode
- st
- Terminaux basés sur VTE.
- xterm - Exécuté avec l'argument
-u8
ou la ressource de configurationxterm*utf8 : 2
.
Gnome-terminal ou rxvt-unicode
Vous devez lancer ces applications à partir d'une locale UTF-8 ou elles ne prendront plus en charge l'UTF-8. Activez la locale en_US.UTF-8
(ou votre alternative UTF-8 locale) selon les instructions ci-dessus et définissez-la comme locale par défaut, puis redémarrez.
Mon système utilise toujours la mauvaise langue
Il est possible que les variables d'environnement soient redéfinies dans d'autres fichiers que locale.conf
. Consultez Environment variables#Defining variables pour plus de détails.
Si vous utilisez un environnement de bureau, tel que GNOME, ses paramètres linguistiques peuvent remplacer les paramètres de locale.conf
.
KDE Plasma permet également de modifier la langue de l'interface utilisateur via les paramètres système. Si l'environnement de bureau utilise toujours la langue par défaut après la modification, supprimez le fichier ~/.config/plasma-localerc
(précédemment : ~/.config/plasma-locale-settings.sh
) devrait résoudre le problème.
Si vous utilisez un gestionnaire d'affichage en combinaison avec accountsservice, suivez les instructions dans Display manager (Français)#Définir la langue de la session utilisateur.
LightDM utilisera automatiquement accountsservice pour définir les paramètres régionaux d'un utilisateur s'il est installé. Sinon, LightDM stocke la configuration de la session utilisateur dans ~/.dmrc
. Il est possible qu'un paramètre local non désiré soit récupéré à partir de là également.
Encodage incorrect pour les fichiers extraits
Les anciennes versions de Windows (XP, Vista et 7) utilisent un encodage différent pour le contenu des fichiers compressés. Pour dézipper, utilisez la commande :
$ unzip -O CP936 fichier.zip
Voir aussi
- Gentoo:Localization/Guide
- Article du wiki Gentoo censé dater de 2008 ou plus tôt[dead link 2023-05-06 ⓘ].
- Test de collationnement interactif de l'ICU.
- Initiative d'internationalisation ouverte du groupe de normalisation libre (Free Standards Group).
- The Single UNIX Specification définition de Locale par The Open Group
- Variables d'environnement Locale