[คำตอบนี้เป็นเป้าหมายบนแพลตฟอร์มลินุกซ์เท่านั้น]
สิ่งแรกที่คุณควรรู้คือพา ธ ของไฟล์ตั้งค่าโลแคลส่วนใหญ่สามารถหาได้จาก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>
ดูครั้งสุดท้าย/usr/share/i18n
? นี่คือที่ตั้งของไฟล์กำหนดค่า 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
ตอนนี้คืออะไร เราจำเป็นต้องคอมไพล์มันลงในไบนารี่อาร์ไคฟ์ หนึ่งในวิธีเช่นสมมติว่าฉันมี/usr/share/i18n/locales/en_LOVE
ฉันสามารถเพิ่มลงในรายการรวบรวม/etc/locale-gen
ไฟล์เช่น:
$ tail -1 /etc/locale.gen
en_LOVE.UTF-8 UTF-8
และรวบรวมเป็นไบนารี่ด้วย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.
และตอนนี้ปรับปรุงสถานที่เริ่มต้นของระบบที่มีความต้องการLANG
, LC_ALL
... ฯลฯ กับเรื่องนี้update-locale
:
sudo update-locale LANG=en_LOVE.UTF-8
update-locale
ที่จริงแล้วยังหมายถึงการปรับปรุง/etc/default/locale
ไฟล์นี้ซึ่งจะมาจากระบบในการเข้าสู่ระบบเพื่อตัวแปรสภาพแวดล้อมการตั้งค่า:
$ head /etc/default/locale
# File generated by update-locale
LANG=en_LOVE.UTF-8
LC_NUMERIC="en_US.UTF-8"
...
แต่เราอาจไม่ต้องการรีบูตเพื่อให้มีผลดังนั้นเราสามารถเพียงแค่ส่งมันไปยังตัวแปรสภาพแวดล้อมในเซสชันเชลล์ปัจจุบัน:
$ . /etc/default/locale
แล้วไงsudo dpkg-reconfigure locales
ล่ะ หากคุณเล่นรอบ ๆ คุณจะรู้ว่าคำสั่งนี้โดยทั่วไปทำหน้าที่เป็น GUI เพื่อลดความซับซ้อนของขั้นตอนข้างต้นเช่นแก้ไข/etc/locale.gen
-> sudo locale-gen
->sudo update-locale LANG=en_LOVE.UTF-8
สำหรับหลามตราบใดที่/etc/locale.gen
มีผู้สมัครที่สถานที่เกิดเหตุและlocale.gen
ได้รับการรวบรวมควรจะทำงานได้โดยไม่ต้องพ่นsetlocale(category, locale)
locale.Error: unsupoorted locale setting
คุณสามารถตรวจสอบสตริงที่ถูกต้องen_US.UTF-8
/ en_US/....etc
ที่จะตั้งในsetlocale()
โดยการสังเกต/etc/locale.gen
ไฟล์แล้วยกเลิกการคอมเม้นต์และรวบรวมตามที่ต้องการ zh_CN GB2312
โดยไม่ต้องจุดในแฟ้มที่หมายถึงสตริงที่ถูกต้องคือและzh_CN
zh_CN.GB2312