Définir des paramètres régionaux personnalisés dans Gnome3 (sur Fedora 20)

15

J'ai créé mes propres locales personnalisés et les ai placés dans /etc/locale.confqui prend effet avec succès si je me connecte sur une console virtuelle (Ctrl + Alt + F2). Dans ma session Gnome3, ces variables ne sont cependant pas définies. Pour les applications terminales, je pourrais simplement les placer dans le .bashrcmais cela ne m'aidera pas avec des applications graphiques comme Thunderbird et Pidgin.

J'ai essayé de suivre ces conseils: les paramètres régionaux dans l'initialisation du shell non utilisés par la session GNOME et même émulé le bogue dans Locale - ArchWiki en créant un .pam_environmentfichier, mais les locales sont toujours ceux définis par Gnome3. Il y a une boîte de dialogue de configuration dans les paramètres de Gnome mais elle ne permet que de définir un ensemble très limité de localecombinaisons prédéfinies et aucun moyen de les personnaliser.

Les fichiers pertinents dans mon répertoire personnel:

user@localhost:~$ ls -lah .dmrc .pam_environment .session .xsession .xsessionrc
lrwxrwxrwx. 1 user user 16 12. Jun 08:57 .dmrc -> /etc/locale.conf
lrwxrwxrwx. 1 user user 16 11. Jun 20:23 .pam_environment -> /etc/locale.conf
lrwxrwxrwx. 1 user user 16 12. Jun 09:09 .session -> /etc/locale.conf
lrwxrwxrwx. 1 user user 16 12. Jun 09:07 .xsession -> /etc/locale.conf
lrwxrwxrwx. 1 user user  9 13. Jun 11:22 .xsessionrc -> .xsession
-rw-rw-r--. 1 user user 66 13. Jun 11:13 .profile

user@localhost:~$ cat .profile 
source /etc/locale.conf

Le contenu de /etc/locale.conf:

LANG="en_US.utf8"
LC_TIME="de_MY.utf8" # NB: de_MY
LC_MONETARY="de_DE.utf8"
LC_PAPER="de_DE.utf8"
LC_NAME="de_DE.utf8"
LC_ADDRESS="de_DE.utf8"
LC_TELEPHONE="de_DE.utf8"
LC_MEASUREMENT="de_DE.utf8"
LC_IDENTIFICATION="de_DE.utf8"

Est-ce que quelqu'un sait comment définir des locales personnalisés dans Gnome3?

Perséides
la source

Réponses:

9

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.conffichier, qui est lu au démarrage initial par le démon systemd . Les paramètres régionaux configurés dans /etc/locale.confsont 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_weekdayet 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_ILavec le contenu de he_ILet 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_ILavec 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_ILpar 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_ILpar 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.conffichier 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_ILpar 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 datecommande 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.

dchrome
la source
Je peux confirmer que cela fonctionne sur Fedora 22 avec Cinnamon. Il fonctionnera très probablement aussi avec GNOME.
Dee'Kej
1
Je suis sûr que s'ils essaient vraiment, ils pourraient rendre la configuration des paramètres régionaux un peu plus difficile encore.
5heikki
J'adore GNOME mais c'est ridicule. Laissez au moins un moyen aux utilisateurs expérimentés de définir leurs paramètres régionaux comme ils le souhaitent. Je veux un environnement local américain pour la plupart des choses, mais mon imprimante utilise du papier A4 ...
static_rtti