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


8.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 des paramètres linguistiques compilées sont disponibles dans /run/current-system/locale/X.Y, où X.Y est la version de la libc, ce qui est l’emplacement par défaut où la GNU libc fournie par Guix cherche les données de régionalisation. Cet emplacement peut être modifié avec la variable d’environnement LOCPATH (voir LOCPATH and locale packages).

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.

8.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 libc version 2.21 est incapable de lire les données linguistiques produites par la libc 2.22 ; pire, ce programme plante plutôt que d’ignorer les données linguistiques incompatibles27. De même, un programme lié à la libc 2.22 peut lire la plupart mais pas toutes les données linguistiques de la libc 2.21 (spécifiquement les données LC_COLLATE sont incompatibles) ; donc les appels à setlocale peuvent échouer, mais les programmes ne plantent 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 utilisateurs non privilégiés peuvent aussi installer leur 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

(27)

Les version 2.23 et supérieures de la GNU libc sauteront simplement les données linguistiques incompatibles, ce qui est déjà mieux.


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