Suivant: Services, Précédent: Disposition du clavier, Monter: Configuration du système [Table des matières][Index]
Un paramètre linguistique définie les conventions culturelles d’une
langue et d’une région particulières (voir Locales dans The GNU C
Library Reference Manual). Chaque paramètre linguistique a un nom de la
forme langue_territoire.jeudecaractères
— p.
ex. fr_LU.utf8
désigne le paramètre linguistique pour le français,
avec les conventions culturelles du Luxembourg, en utilisant l’encodage
UTF-8.
Normalement, vous voudrez spécifier les paramètres linguistiques par défaut
pour la machine en utilisant le champ locale
de la déclaration
operating-system
(voir locale
).
Les paramètres régionaux choisis sont automatiquement ajoutés aux
définitions des paramètres régionaux connues par le système au besoin,
avec le jeu de caractères inféré à partir de son nom, p. ex.
bo_CN.utf8
supposera qu’il faut utiliser le jeu de caractères
UTF-8
. Des définitions supplémentaires peuvent être spécifiées dans
le champ locale-definitions
de operating-system
— c’est utile
par exemple si le jeu de caractères n’a pas été inféré à partir du nom.
L’ensemble par défaut de définitions comprend certains paramètres
linguistiques parmi les plus utilisés, mais pas toutes les variantes
disponibles, pour gagner de la place.
Par exemple, pour ajouter les paramètres pour le frison septentrional en Allemagne, la valeur de ce champ serait :
(cons (locale-definition
(name "fy_DE.utf8") (source "fy_DE"))
%default-locale-definitions)
De me, pour gagner de la place, on peut vouloir lister dans
locale-definitions
seulement les paramètres qui sont vraiment
utilisés, comme dans :
(list (locale-definition
(name "ja_JP.eucjp") (source "ja_JP")
(charset "EUC-JP")))
Les définitions compilées de locale sont disponibles à
/run/current-system/locale/X.Y, où X.Y
est la version de la
libc, qui est l’emplacement par défaut où la GNU libc fournie par Guix
recherche les données locales. Il est possible d’y remédier en utilisant la
variable d’environnement LOCPATH
(voir LOCPATH
et les paquets locaux).
La forme locale-definition
est fournie par le module (gnu
system locale)
. Des détails sont disponibles plus bas.
C’est le type de données d’une définition de paramètres linguistiques.
name
Le nom du paramètre linguistique. Voir Locale Names dans The GNU C Library Reference Manual, pour en savoir plus sur les noms de paramètres linguistiques.
source
Le nom de la source pour ce paramètre linguistique. C’est typiquement la
partie langue_territoire
du nom du paramètre.
charset
(par défaut : "UTF-8"
)Le « jeu de caractères » d’un paramètre linguistique, défini par l’IANA.
Une liste des paramètres linguistiques UTF-8 couramment utilisés, utilisée
comme valeur par défaut pour le champ locale-definitions
des
déclarations operating-system
.
Ces définitions de paramètres linguistiques utilisent le jeu de
caractère normalisé pour la partie qui suit le point dans le nom
(voir normalized codeset dans The GNU C
Library Reference Manual). Donc par exemple il y a uk_UA.utf8
mais
pas, disons, uk_UA.UTF-8
.
Les déclaration operating-system
fournissent un champ
locale-libcs
pour spécifier les paquets GNU libc à utiliser pour
compiler les déclarations de paramètres linguistiques
(voir Référence de operating-system
). « Pourquoi je devrais m’en soucier ?
», vous demandez-vous sûrement. Hé bien il se trouve que le format binaire
des données linguistique est parfois incompatible d’une version de la libc à
une autre.
Par exemple, un programme lié à la version 2.21 de la libc est incapable de
lire les données locales produites avec la libc 2.22 ; pire encore, ce
programme aborts au lieu d’ignorer simplement les données locales
incompatibles33. De même, un programme lié à la libc 2.22 peut lire la
plupart des données locales de la libc 2.21, mais pas toutes (en
particulier, les données LC_COLLATE
sont incompatibles) ; ainsi, les
appels à setlocale
peuvent échouer, mais les programmes ne
s’arrêteront pas.
Le « problème » avec Guix c’est que les utilisateurs ont beaucoup de liberté : ils peuvent choisir s’ils veulent et quand ils veulent mettre à jour les logiciels de leur profil, et peuvent utiliser une version différente de la libc de celle que l’administrateur système utilise pour construire les données linguistiques du système global.
Heureusement, les utilisateur·rice·s non privilégié·e·s peuvent aussi
installer leurs propres données linguistiques et définir GUIX_LOCPATH
comme il le faut (voir GUIX_LOCPATH
and locale
packages).
Cependant, c’est encore mieux si les données linguistiques du système dans
/run/current-system/locale étaient construites avec les versions de
la libc utilisées sur le système, pour que tous les programmes puissent y
accéder — c’est surtout crucial sur un système multi-utilisateurs. Pour
cela, l’administrateur peut spécifier plusieurs paquets de la libc dans le
champ locale-libcs
de operating-system
:
(use-package-modules base) (operating-system ;; … (locale-libcs (list glibc-2.21 (canonical-package glibc))))
Cet exemple créera un système contenant les définitions des paramètres linguistiques pour la libc 2.21 et pour la version actuelle de la libc dans /run/current-system/locale.
Versions 2.23 et suivantes de GNU libc ignorera simplement les données locales incompatibles, ce qui est déjà une amélioration.
Suivant: Services, Précédent: Disposition du clavier, Monter: Configuration du système [Table des matières][Index]