Informations d'arrière-plan
J'ai testé la solution sur Fedora 21 avec GNOME Shell 3.14.4, mais je pense qu'elle peut également être appliquée à d'autres versions.
La première chose à comprendre est que l'environnement de bureau GNOME remplace les définitions de paramètres régionaux à l'échelle du système et n'est donc pas affecté par /etc/locale.conf
. De plus, certaines applications peuvent avoir leur propre configuration locale et n'utilisent pas du tout les paramètres système ou GNOME. Dans ce guide, je décrirai un moyen de personnaliser les paramètres régionaux selon vos besoins et GNOME et le système sera cohérent du point de vue des paramètres régionaux.
Vérification de l'état actuel des paramètres régionaux
Paramètres à l'échelle du système
Dans le Guide de l'administrateur système de Fedora 21 :
Les paramètres régionaux à l'échelle du système sont stockés dans le /etc/locale.conf
fichier, qui est lu au démarrage initial par le démon systemd . Les paramètres régionaux configurés dans /etc/locale.conf
sont hérités par chaque service ou utilisateur, sauf si des programmes individuels ou des utilisateurs individuels les remplacent.
Pour voir l'état actuel des paramètres régionaux, nous pouvons exécuter:
$ localectl status
System Locale: LANG=en_US.UTF-8
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_US.UTF-8
LC_MONETARY=en_US.UTF-8
LC_PAPER=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
VC Keymap: us
X11 Layout: us
Paramètres GNOME
$ gsettings get org.gnome.system.locale region
'en_US.UTF-8'
GNOME n'a qu'un seul paramètre. En donnant un aperçu rapide du code source de gnome-control-center, il semble que lorsque la set_localed_locale()
fonction est appelée, elle définit toutes les catégories suivantes (LC_TIME, LC_NUMERIC, LC_MONETARY, LC_MEASUREMENT, LC_PAPER) sur les mêmes paramètres régionaux définis dans org.gnome.system.locale region
.
Mélanger différents paramètres régionaux semble impossible sans créer un environnement local personnalisé, mais heureusement, ce n'est pas une tâche très complexe.
Création de paramètres régionaux personnalisés
Je pense que la façon la plus simple d'expliquer est par l'exemple. Dans mon cas spécifique, je voulais avoir un environnement local personnalisé, principalement basé sur l'hébreu ( he_IL ) mais avec LC_NAME, LC_MESSAGES de en_US et LC_TIME (avec modifié first_weekday
et first_workday
) de en_GB .
Récupération des fichiers de définition de paramètres régionaux
Vous devriez avoir une idée des paramètres régionaux que vous souhaitez mélanger. Nous devons d'abord localiser les fichiers de définition associés, qui peuvent être trouvés dans /usr/share/i18n/locales/
. Pour revenir à mon exemple, j'avais besoin des éléments suivants: he_IL , en_US et en_GB . J'ai installé un dossier de travail chez moi et y ai copié les fichiers requis:
$ cd /usr/share/i18n/locales
$ mkdir -v ~/custom-locale ; cp -v he_IL en_US en_GB ~/custom-locale/
Création d'un nouveau fichier de définition
J'ai décidé d'appeler ma locale hc_IL et j'ai pris he_IL comme base. Les lignes suivantes créent un nouveau fichier hc_IL
avec le contenu de he_IL
et sur le chemin remplacent toutes les occurrences d'une chaîne he_IL à l'intérieur du fichier par hc_IL .
$ cd ~/custom-locale/
$ sed 's/he_IL/hc_IL/g' he_IL > hc_IL
Modification du nouveau fichier de définition
Nous pouvons maintenant personnaliser la nouvelle locale selon nos besoins. Ouvrez le fichier nouvellement créé ~/custom-locale/hc_IL
avec votre éditeur de texte préféré. J'utilise vim (il a une coloration syntaxique appropriée pour les fichiers de définition de paramètres régionaux):
$ vim ~/custom-locale/hc_IL
Pour ceux qui n'ont pas encore choisi leur éditeur préféré et vim n'est pas leur tasse de thé, utilisez gedit :)
$ gedit ~/custom-locale/hc_IL
La structure du fichier n'est pas très compliquée. Essentiellement, il est construit à partir de sections. Depuis les pages de manuel locale (5) :
La définition des paramètres régionaux comprend une partie pour chaque catégorie de paramètres régionaux. Chaque partie peut être copiée à partir d'un autre environnement local existant ou peut être définie à partir de zéro. Si la catégorie doit être copiée, le seul mot-clé valide dans la définition est copier suivi du nom des paramètres régionaux qui doivent être copiés.
La notion de copie est très utile. Il fait gagner du temps et le fichier résultant est clair et concis. Par exemple, au lieu de copier des sections entières, vous pouvez avoir:
LC_MESSAGES
copy "en_US"
END LC_MESSAGES
La documentation complète sur un fichier de définition de paramètres régionaux est accessible via:
$ man 5 locale
Cependant, si vous souhaitez simplement créer un environnement local personnalisé, qui est un mélange de paramètres régionaux existants, il n'est pas nécessaire de comprendre tous les détails.
Dans mon cas, j'ai modifié les catégories et mots clés suivants:
LC_IDENTIFICATION
title "Custom Hebrew locale"
source "mydomain.ws"
address "http:////www.mydomain.ws"
contact ""
email "[email protected]"
tel ""
fax ""
language "Hebrew"
territory "Israel"
revision "1.0"
date "2015-04-21"
Remarque: Toutes les lignes " catégorie .. " de la section LC_IDENTIFICATION ont été modifiées lors de la création du fichier à l'aide de sed
. Nous n'avons donc plus besoin de les toucher.
LC_TIME
J'ai copié la section complète de en_GB et modifié uniquement les lignes qui indiquent le premier jour de la semaine et le premier jour ouvrable:
first_weekday 1
first_workday 1
Le reste des catégories que j'ai laissées telles quelles ou remplacé leur contenu par la directive de copie comme dans:
LC_NAME
copy "en_US"
END LC_NAME
Ça y est, le fichier de définition est prêt. N'oubliez pas d'enregistrer le fichier :)
Compiler et copier la nouvelle locale
La compilation des nouveaux paramètres régionaux se fait en utilisant la commande suivante en tant que root ou en utilisant sudo . Remplacez hc_IL
par votre locale:
$ sudo localedef -c -v -i hc_IL -f UTF-8 hc_IL.UTF-8
Si la compilation réussit, les données locales compilées sont ajoutées au fichier d'archive /usr/lib/locale/locale-archive
.
Copiez le nouveau fichier de définition des paramètres régionaux dans le répertoire des définitions de paramètres régionaux. Remplacez hc_IL
par votre locale:
$ sudo cp -v hc_IL /usr/share/i18n/locales/
Activation de la nouvelle locale
Dans cette étape, nous voulons configurer le système et GNOME pour utiliser les nouveaux paramètres régionaux.
Paramètres à l'échelle du système
Modifiez le /etc/locale.conf
fichier en tant que root et définissez chaque ligne commençant par LC_
votre nouvelle locale. Par exemple:
LANG=en_US.UTF-8
LC_NUMERIC=hc_IL.utf8
LC_TIME=hc_IL.utf8
LC_MONETARY=hc_IL.utf8
LC_PAPER=hc_IL.utf8
LC_MEASUREMENT=hc_IL.utf8
Paramètres GNOME
Pour activer les nouveaux paramètres régionaux dans GNOME, exécutez la commande suivante. Remplacez hc_IL
par votre locale:
$ gsettings set org.gnome.system.locale region "hc_IL.utf8"
Validation des nouveaux paramètres
La dernière étape consiste à valider que tout fonctionne comme prévu. Pour recharger tous les paramètres, le plus simple pour moi était de redémarrer.
- Reportez-vous à la section "Vérification de l'état des paramètres régionaux actuels" pour vérifier que la configuration du système est correcte.
Utilisez le shell GNOME et les applications dépendantes des paramètres régionaux (graphiques et console) et vérifiez qu'ils se comportent comme prévu avec les nouveaux paramètres régionaux. Par exemple, si vous avez personnalisé LC_TIME, vous pouvez exécuter la date
commande pour valider le format de date:
$ date +%x
21/04/15
Remarque: Tout a été testé sur Fedora 21 avec GNOME 3.14. D'autres distributions Linux peuvent nécessiter des étapes supplémentaires ou différentes.
Veuillez commenter si vous rencontrez des problèmes avec les instructions.