สำหรับการกำหนดค่าสถานที่แรกที่ผมทำงานsedสคริปต์ที่จะสร้างสำเนาใหม่ของ '/etc/locale.gen' ไฟล์ตามเนื้อหาของ '/ usr / share / i18n / สนับสนุน' ไฟล์ ทุกบรรทัดจากไฟล์อินพุตจะถูกคัดลอก แต่มันจะกลายเป็นความคิดเห็นยกเว้นว่าจะเป็นรายการของโลแคล UTF-8 สำหรับภาษาที่ฉันต้องการให้มีในระบบของฉัน (เช่นอังกฤษ, ดัตช์, ฝรั่งเศส, และเยอรมัน):
sed --regexp-extended --expression='
1 {
i\
# This file lists locales that you wish to have built. You can find a list\
# of valid supported locales at /usr/share/i18n/SUPPORTED, and you can add\
# user defined locales to /usr/local/share/i18n/SUPPORTED. If you change\
# this file, you need to rerun locale-gen.\
\
}
/^(en|nl|fr|de)(_[[:upper:]]+)?(\.UTF-8)?(@[^[:space:]]+)?[[:space:]]+UTF-8$/! s/^/# /
' /usr/share/i18n/SUPPORTED > /etc/locale.gen
ต่อไปฉันจะตั้งค่าโลแคลสภาวะแวดล้อมดีฟอลต์ในฐานข้อมูล debconf เช่นเป็นBritish English :
debconf-set-selections <<< 'locales locales/default_environment_locale select en_GB.UTF-8'
ในภายหลังฉันจะลบไฟล์ '/ etc / default / locale' ที่มีอยู่ (เพื่อให้แน่ใจว่าเนื้อหาเก่าจะไม่รบกวนการตั้งค่าใหม่ของฉัน) และเรียกใช้คำสั่งdpkg-reconfigureเพื่อสร้างโลแคลทั้งหมดที่สคริปต์sedเลือกไว้ และเพื่อสร้างไฟล์ '/ etc / default / locale' ใหม่ที่มีเพียงรายการเพื่อตั้งค่าตัวแปร 'LANG' เป็นโลแคลสภาพแวดล้อมเริ่มต้นที่ฉันเลือก:
rm --force --verbose /etc/default/locale
dpkg-reconfigure --frontend=noninteractive locales
จากนั้นขึ้นอยู่กับข้อกำหนดของฉันฉันอาจต้องการเรียกใช้คำสั่งupdate-localeสองสามคำเพื่อแทนที่เช่นตัวแปรที่ส่งผลต่อการจัดรูปแบบของค่าและตั้งค่าเป็นภาษาอื่น (เช่นภาษาอังกฤษไอริช ):
update-locale LC_NUMERIC='en_IE.UTF-8'
update-locale LC_TIME='en_IE.UTF-8'
update-locale LC_MONETARY='en_IE.UTF-8'
update-locale LC_PAPER='en_IE.UTF-8'
update-locale LC_NAME='en_IE.UTF-8'
update-locale LC_ADDRESS='en_IE.UTF-8'
update-locale LC_TELEPHONE='en_IE.UTF-8'
update-locale LC_MEASUREMENT='en_IE.UTF-8'
update-locale LC_IDENTIFICATION='en_IE.UTF-8'
(ฉันสามารถระบุพารามิเตอร์เหล่านี้ทั้งหมดในการเรียกใช้ครั้งเดียวของคำสั่งupdate-localeแต่เห็นได้ชัดว่าลำดับการเขียนรายการไปยังไฟล์ '/ etc / default / locale' นั้นไม่แน่นอนถ้าฉันทำเช่นนั้นฉัน ต้องการให้พวกเขาอยู่ในลำดับเดียวกันเสมอซึ่งเป็นสาเหตุที่ฉันสร้างพวกเขาทีละคน)
และสุดท้ายฉันอาจต้องการเรียกใช้คำสั่งupdate-localeหนึ่งครั้งเพื่อตั้งค่าตัวแปร LANGUAGE (เช่นรายการภาษาที่ฉันต้องการให้แสดงข้อความแปล):
update-locale LANGUAGE='en_GB:en_US:en'
File "/usr/share/apt-listchanges/ALChacks.py", line 32, in <module> sys.stderr.write(_("Can't set locale; make sure $LC_* and $LANG are correct!\n"))
...