Cette question a été stimulée en posant la question
Le navigateur Chromium ne permet pas de définir le format de papier par défaut pour "Imprimer dans un fichier", et également par une conversation avec @Gilles sur le chat. Comme l'a souligné @don_crissti, et comme vérifié par moi, changer les paramètres régionaux (au moins LC_PAPER
) fait une différence dans le format de papier sélectionné.
Je n'avais jamais beaucoup réfléchi à ce qu'il fallait sélectionner et j'avais toujours opté pour en_US.UTF-8
car cela semblait être un choix par défaut raisonnable.
Cependant, selon @Gilles sur le chat (voir la conversation à partir de http://chat.stackexchange.com/transcript/message/17017095#17017095). Extraits :
Gilles :LC_PAPER par défaut est $LANG
Gilles :Vous devez avoir LANG=en_US.UTF-8. C'est une mauvaise idée :cela définit
LC_COLLATE et c'est presque toujours une mauvaise choseGilles :LC_COLLATE ne décrit pas le classement correct, c'est trop
restrictif (il va caractère par caractère) supprimez LANG et à la place
définissez LC_CTYPE et LC_PAPERGilles :plus LC_MESSAGES si vous souhaitez des messages dans une autre langue que
l'anglais
De toute évidence, il y a des problèmes ici dont je ne suis pas au courant, et je suis sûr que beaucoup d'autres le sont aussi. Alors, quels problèmes devez-vous prendre en compte lors de la définition des paramètres régionaux et comment devez-vous les définir ? J'ai toujours exécuté dpkg-reconfigure locales
dans Debian, sans y réfléchir à deux fois.
Question spécifique :Dois-je définir mes paramètres régionaux sur en_IN.UTF-8 ? Y a-t-il des inconvénients à le faire ?
Réponse acceptée :
Les paramètres régionaux sont des préférences utilisateur liées à votre culture.
Noms de paramètres régionaux
Sur toutes les variantes Unix actuelles que je connais (mais pas sur quelques antiquités), les noms de paramètres régionaux suivent le même schéma :
- Un code de langue à deux lettres minuscules ISO 639-1 ou un code de langue à trois lettres ISO 639-2 si la langue n'a pas de code à deux lettres. Par exemple,
en
pour l'anglais,de
pour l'allemand,ja
pour le japonais,uk
pour l'ukrainien,ber
pour le berbère, … - Pour de nombreuses langues, mais pas toutes, un trait de soulignement
_
suivi d'un code de pays à deux lettres majuscules ISO 3166. Ainsi :en_US
pour l'anglais américain,en_UK
pour l'anglais britannique,fr_CA
Français canadien (québécois),de_DE
pour l'allemand d'Allemagne,de_AT
pour l'allemand d'Autriche,ja_JP
pour le japonais (du Japon), etc. - Facultativement, un point
.
suivi du nom d'un encodage de caractères tel queUTF-8
,ISO-8859-1
,KOI8-U
,GB2312
,Big5
, etc. Avec GNU libc au moins (je ne sais pas à quel point c'est répandu), la casse et la ponctuation sont ignorées dans l'encodage des noms. Par exemple,zh_CN.UTF-8
est le chinois mandarin (simplifié) encodé en UTF-8, tandis quezh_CN
est le chinois mandarin encodé en GB2312, etzh_TW
est le chinois taïwanais (traditionnel) encodé en Big5. - Facultativement, un arobase
@
suivi du nom d'une variante. La signification des variantes dépend des paramètres régionaux. Par exemple, de nombreux pays européens ont un@euro
variante locale où le signe monétaire est € et où l'encodage est celui qui inclut ce caractère (ISO 8859-15 ou ISO 8859-16), par opposition à la variante sans fioritures avec l'ancien signe monétaire. Par exemple,en_IE
(Anglais, Irlande) utilise le codage latin1 (ISO 8859-1) et £ comme symbole monétaire tandis que[email protected]
utilise l'encodage latin9 (ISO 8859-15) et € comme symbole monétaire.
De plus, il existe deux noms de paramètres régionaux qui existent sur tous les systèmes de type Unix :C
et POSIX
. Ces noms sont synonymes et signifient informatique, c'est-à-dire des paramètres par défaut appropriés pour les données analysées par un programme informatique.
Paramètres régionaux
Les catégories de paramètres régionaux suivantes sont définies par POSIX :
LC_CTYPE
:le jeu de caractères utilisé par les applications du terminal :données de classification (quels caractères sont des lettres, ponctuation, espaces, invalides, etc.) et conversion de casse. Les utilitaires de texte tiennent généralement compte deLC_CTYPE
pour déterminer les limites des caractères.LC_COLLATE
:ordre de classement (c'est-à-dire de tri). Ce paramètre est d'une utilité très limitée pour plusieurs raisons :- La plupart des langages ont des règles complexes qui dépendent de ce qui est trié (par exemple, les mots du dictionnaire et les noms propres peuvent ne pas utiliser le même ordre) et ne peuvent pas être exprimés par
LC_COLLATE
. - Il existe peu d'applications où l'ordre de tri approprié est important et qui sont effectuées par un logiciel utilisant des paramètres régionaux. Par exemple, les traitements de texte stockent la langue et l'encodage d'un fichier dans le fichier lui-même (sinon le fichier ne serait pas traité correctement sur un système avec des paramètres régionaux différents) et ne se soucient pas des paramètres régionaux spécifiés par l'environnement.
LC_COLLATE
peut avoir des effets secondaires désagréables, notamment parce qu'il provoque l'ordre de tri A [A-Z] casser certaines applications.
- La plupart des langages ont des règles complexes qui dépendent de ce qui est trié (par exemple, les mots du dictionnaire et les noms propres peuvent ne pas utiliser le même ordre) et ne peuvent pas être exprimés par
LC_MESSAGES
:la langue des messages d'information et d'erreur.LC_NUMERIC
:formatage des nombres :décimal et séparateur de milliers.
De nombreuses applications codent en dur.
comme séparateur décimal. Cela faitLC_NUMERIC
pas très utile et potentiellement dangereux :- Même si vous le définissez, vous verrez toujours le format par défaut assez souvent.
- Vous êtes susceptible de vous retrouver dans une situation où une application produit une sortie dépendante des paramètres régionaux et une autre application attend
.
être la virgule décimale, ou,
être un séparateur de champs.
LC_MONETARY
:commeLC_NUMERIC
, mais pour des montants en devise locale.
Très peu d'applications l'utilisent.LC_TIME
:mise en forme de la date et de l'heure :noms des jours et des mois, horloge au format 12 ou 24 heures, ordre des parties de la date, ponctuation, etc.
GNU libc, que vous trouverez sur Linux non embarqué, définit des catégories de paramètres régionaux supplémentaires :
LC_PAPER
:le format de papier par défaut (défini par la hauteur et la largeur).LC_NAME
,LC_ADDRESS
,LC_TELEPHONE
,LC_MEASUREMENT
,LC_IDENTIFICATION
:Je ne connais aucune application qui les utilise.
Variables d'environnement
Les applications qui utilisent des paramètres régionaux les déterminent à partir de variables d'environnement.
- Puis la valeur du
LANG
La variable d'environnement est utilisée sauf si elle est remplacée par un autre paramètre. SiLANG
n'est pas défini, les paramètres régionaux par défaut sontC
. - Le
LC_xxx
les noms peuvent être utilisés comme variables d'environnement. - Si
LC_ALL
est défini, toutes les autres valeurs sont ignorées ; ceci est principalement utile pour définirLC_ALL=C
exécuter des applications qui doivent produire la même sortie quel que soit l'endroit où elles sont exécutées. - De plus, GNU libc utilise
LANGUAGE
pour définir des replis pourLC_MESSAGES
(ex.LANGUAGE=fr_BE:fr_FR:en
de préférence le français belge, ou si indisponible le français français, ou si indisponible l'anglais).
Installation des paramètres régionaux
Les données locales peuvent être volumineuses, de sorte que certaines distributions ne les fournissent pas sous une forme utilisable et nécessitent à la place une étape d'installation supplémentaire.
- Sur Debian, pour installer les paramètres régionaux, exécutez
dpkg-reconfigure locales
et sélectionnez dans la liste de la boîte de dialogue, ou modifiez/etc/locale.gen
puis exécutezlocale-gen
. - Sur Ubuntu, pour installer les paramètres régionaux, exécutez
locale-gen
avec les noms des paramètres régionaux comme arguments.
Vous pouvez définir vos propres paramètres régionaux.
Recommandation
Les paramètres utiles sont :
- Définir
LC_CTYPE
à la langue et à l'encodage dans lesquels vous encodez vos fichiers texte. Assurez-vous que vos terminaux utilisent cet encodage.
Pour la plupart des langues, seul l'encodage compte. Il y a quelques exceptions; par exemple, uni
majuscule estI
dans la plupart des langues saufİ
en turc (tr_TR
). - Définir
LC_MESSAGES
à la langue dans laquelle vous souhaitez voir les messages. - Définir
LC_PAPER
versen_US
si vous voulez que US Letter soit le format de papier par défaut et à peu près n'importe quoi d'autre (par exemple,en_GB
) si vous voulez A4. - En option, définissez
LC_TIME
à votre format d'heure préféré.
Comme expliqué ci-dessus, évitez de définir LC_COLLATE
et LC_NUMERIC
. Si vous utilisez LANG
, remplacez explicitement ces deux catégories en les définissant sur C
.