[Questa risposta è target solo su piattaforma linux]
La prima cosa che dovresti sapere è che la maggior parte del percorso di configurazione del file di configurazione locale può essere ottenuto da 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>
Vedi l'ultimo /usr/share/i18n
? Qui è dove si trova il tuo file di configurazione 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
E adesso? Dobbiamo compilarli in un archivio binario. Uno dei modi, ad esempio supponiamo di averlo /usr/share/i18n/locales/en_LOVE
, posso aggiungerlo all'elenco di compilazione, ovvero al /etc/locale-gen
file:
$ tail -1 /etc/locale.gen
en_LOVE.UTF-8 UTF-8
E compilarlo in binario con 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.
E ora aggiorna le impostazioni internazionali predefinite del sistema con desiderato LANG
, LC_ALL
ecc. Ecc. Con questo update-locale
:
sudo update-locale LANG=en_LOVE.UTF-8
update-locale
in realtà significa anche aggiornare questo /etc/default/locale
file che verrà sorgente dal sistema all'accesso per impostare le variabili di ambiente:
$ head /etc/default/locale
# File generated by update-locale
LANG=en_LOVE.UTF-8
LC_NUMERIC="en_US.UTF-8"
...
Ma potremmo non voler riavviare per rendere effettivi, quindi possiamo semplicemente sorgente alla variabile d'ambiente nella sessione di shell corrente:
$ . /etc/default/locale
Che ne dici sudo dpkg-reconfigure locales
? Se ci giochi, saprai che questo comando agisce sostanzialmente come GUI per semplificare i passaggi precedenti, ovvero Modifica /etc/locale.gen
-> sudo locale-gen
->sudo update-locale LANG=en_LOVE.UTF-8
Per python, purché /etc/locale.gen
contenga quel candidato locale e venga locale.gen
compilato, setlocale(category, locale)
dovrebbe funzionare senza lanci locale.Error: unsupoorted locale setting
. È possibile controllare la stringa corretta en_US.UTF-8
/ en_US/....etc
da impostare setlocale()
, osservando il /etc/locale.gen
file, quindi decommentare e compilarlo come desiderato. zh_CN GB2312
senza punto in quel file significa che la stringa corretta è zh_CN
e zh_CN.GB2312
.