Suivant: , Précédent: , Monter: Configuration système   [Table des matières][Index]


10.7 Régionalisation

Un paramètre linguistique définie les conventions culturelles d’une langue et d’une région particulières (voir Régionalisation 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.

Type de données : locale-definition

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.

Variable Scheme : %default-locale-definitions

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.

10.7.1 Considérations sur la compatibilité des données linguistiques

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 système d'exploitation). « 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 incompatibles29. 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.


Notes de bas de page

(29)

Versions 2.23 et suivantes de GNU libc ignorera simplement les données locales incompatibles, ce qui est déjà une amélioration.


Suivant: , Précédent: , Monter: Configuration système   [Table des matières][Index]