[Bu cevap yalnızca linux platformunda hedeftir]
Bilmeniz gereken ilk şey, yerel ayar dosyasının bulunduğu yolun çoğunun şu adresten alınabileceği 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>
Sonuncusunu /usr/share/i18n
gördün mü? Xx_XX.UTF-8 yapılandırma dosyanızın bulunduğu yer:
$ 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
Şimdi ne olacak ? Onları arşiv ikili dosyasında derlememiz gerekiyor. Yollardan biri, örneğin varsayalım /usr/share/i18n/locales/en_LOVE
, derleme listesine, yani /etc/locale-gen
dosya ekleyebilirsiniz :
$ tail -1 /etc/locale.gen
en_LOVE.UTF-8 UTF-8
Ve ikili dosya ile derleyin 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.
Ve şimdi sistem varsayılan yerel ayarını istediğiniz LANG
, LC_ALL
... vb. İle güncelleyin update-locale
:
sudo update-locale LANG=en_LOVE.UTF-8
update-locale
aslında /etc/default/locale
kurulum ortam değişkenlerine girişte sistem tarafından kaynaklanacak olan bu dosyayı güncellemek anlamına gelir :
$ head /etc/default/locale
# File generated by update-locale
LANG=en_LOVE.UTF-8
LC_NUMERIC="en_US.UTF-8"
...
Ancak yürürlüğe girmek için yeniden başlatmak istemeyebiliriz, bu yüzden sadece geçerli kabuk oturumunda ortam değişkenine kaynak yapabiliriz:
$ . /etc/default/locale
Nasıl sudo dpkg-reconfigure locales
? Etrafında oynarsanız, bu komutun temel olarak yukarıdaki adımları basitleştirmek için GUI olarak hareket ettiğini bilirsiniz, yani Düzenle /etc/locale.gen
-> sudo locale-gen
->sudo update-locale LANG=en_LOVE.UTF-8
Python için, /etc/locale.gen
bu yerel aday ve locale.gen
derleme içerdiği sürece , atılmadan setlocale(category, locale)
çalışmalıdır locale.Error: unsupoorted locale setting
. Dosyayı gözlemleyerek, içinde ayarlanacak doğru dizeyi en_US.UTF-8
/ kontrol edebilir ve ardından açıp kapatabilirsiniz ve istediğiniz gibi derleyebilirsiniz. bu dosyada nokta olmadan doğru dize ve anlamına gelir .en_US/....etc
setlocale()
/etc/locale.gen
zh_CN GB2312
zh_CN
zh_CN.GB2312