[Cette réponse est uniquement destinée à la plate-forme Linux]
La première chose que vous devez savoir est que la plupart du chemin localisé du fichier de configuration locale peut être obtenu à partir de localedef --help
:
$ localedef --help | tail -n 5
System's directory for character maps : /usr/share/i18n/charmaps
repertoire maps: /usr/share/i18n/repertoiremaps
locale path : /usr/lib/locale:/usr/share/i18n
For bug reporting instructions, please see:
<https://bugs.launchpad.net/ubuntu/+source/glibc/+bugs>
Voir le dernier /usr/share/i18n
? C'est là que se trouve votre fichier de configuration xx_XX.UTF-8:
$ ls /usr/share/i18n/locales/zh_*
/usr/share/i18n/locales/zh_CN /usr/share/i18n/locales/zh_HK /usr/share/i18n/locales/zh_SG /usr/share/i18n/locales/zh_TW
Maintenant quoi ? Nous devons les compiler en archive binaire. L'un des moyens, par exemple supposons que je l'ai /usr/share/i18n/locales/en_LOVE
, je peux l'ajouter dans la liste de compilation, c'est-à-dire le /etc/locale-gen
fichier:
$ tail -1 /etc/locale.gen
en_LOVE.UTF-8 UTF-8
Et compilez-le en binaire avec sudo locale-gen
:
$ sudo locale-gen
Generating locales (this might take a while)...
en_AG.UTF-8... done
en_AU.UTF-8... done
en_BW.UTF-8... done
...
en_LOVE.UTF-8... done
Generation complete.
Et maintenant, mettez à jour les paramètres régionaux par défaut du système avec les souhaits LANG
, LC_ALL
... etc avec ceci update-locale
:
sudo update-locale LANG=en_LOVE.UTF-8
update-locale
signifie également mettre à jour ce /etc/default/locale
fichier qui se source par le système lors de la connexion pour configurer les variables d'environnement:
$ head /etc/default/locale
# File generated by update-locale
LANG=en_LOVE.UTF-8
LC_NUMERIC="en_US.UTF-8"
...
Mais nous ne souhaitons peut-être pas redémarrer pour prendre effet, nous pouvons donc simplement le source dans la variable d'environnement dans la session shell actuelle:
$ . /etc/default/locale
Et alors sudo dpkg-reconfigure locales
? Si vous y jouez, vous saurez que cette commande agit essentiellement comme une interface graphique pour simplifier les étapes ci-dessus, c'est-à-dire Édition /etc/locale.gen
-> sudo locale-gen
->sudo update-locale LANG=en_LOVE.UTF-8
Pour python, tant qu'il /etc/locale.gen
contient ce candidat local et locale.gen
qu'il est compilé, il setlocale(category, locale)
devrait fonctionner sans lancer locale.Error: unsupoorted locale setting
. Vous pouvez vérifier la chaîne correcte en_US.UTF-8
/ en_US/....etc
à définir setlocale()
, en observant le /etc/locale.gen
fichier, puis décommenter et compiler comme vous le souhaitez. zh_CN GB2312
sans point dans ce fichier signifie que la chaîne correcte est zh_CN
et zh_CN.GB2312
.