สถานที่เกิดเหตุการตั้งค่ามีค่าของผู้ใช้ที่เกี่ยวข้องกับวัฒนธรรมของคุณ
ชื่อโลแคล
ในตัวแปรยูนิกซ์ปัจจุบันทั้งหมดที่ฉันรู้จัก (แต่ไม่ใช่ของโบราณ), ชื่อโลแคลตามรูปแบบเดียวกัน:
- ISO 639-1ตัวพิมพ์เล็กตัวอักษรสองตัวรหัสภาษาหรือISO 639-2สามตัวอักษรรหัสภาษาถ้าภาษาที่ไม่มีรหัสตัวอักษรสองตัว ตัวอย่างเช่น
en
สำหรับภาษาอังกฤษde
สำหรับภาษาเยอรมันja
สำหรับภาษาญี่ปุ่นuk
สำหรับภาษายูเครนber
สำหรับภาษาเบอร์เบอร์ ...
- สำหรับหลายภาษา แต่ไม่ใช่ทุกภาษาขีดเส้นใต้
_
ตามด้วยรหัสประเทศที่เป็นตัวอักษรสองตัวISO 3166 ดังนั้น: en_US
สำหรับภาษาอังกฤษแบบสหรัฐอเมริกา, en_UK
ภาษาอังกฤษแบบอังกฤษ, fr_CA
แคนาดา (ควิเบก) ฝรั่งเศส, de_DE
สำหรับเยอรมันเยอรมัน, de_AT
เยอรมันเยอรมันออสเตรีย, ja_JP
ญี่ปุ่น (ญี่ปุ่น), เป็นต้น
- เลือกจุด
.
ตามด้วยชื่อของการเข้ารหัสอักขระเช่นUTF-8
, ISO-8859-1
, KOI8-U
, GB2312
, Big5
ฯลฯ ด้วย libc GNU อย่างน้อย (ผมไม่ทราบวิธีที่แพร่หลายนี้อยู่) กรณีและเครื่องหมายวรรคตอนถูกละเว้นในการเข้ารหัสชื่อ ตัวอย่างเช่นzh_CN.UTF-8
เป็นภาษาจีนกลาง (ตัวย่อ) เข้ารหัสใน UTF-8 ในขณะที่zh_CN
ภาษาจีนกลางเข้ารหัสเป็น GB2312 และzh_TW
เป็นภาษาจีนไต้หวัน (ดั้งเดิม) เข้ารหัสใน Big5
- เป็นทางเลือกเครื่องหมาย at
@
ตามด้วยชื่อของตัวแปร ความหมายของตัวแปรขึ้นอยู่กับสถานที่ ตัวอย่างเช่นประเทศในยุโรปหลายแห่งมี@euro
ตัวแปรสถานที่โดยที่สัญลักษณ์สกุลเงินคือ€และที่การเข้ารหัสเป็นหนึ่งที่มีอักขระนี้ (ISO 8859-15 หรือ ISO 8859-16) ซึ่งตรงข้ามกับตัวแปรที่ไม่ได้ตกแต่งด้วยสัญลักษณ์สกุลเงินที่เก่ากว่า ตัวอย่างเช่นen_IE
(อังกฤษ, ไอร์แลนด์) ใช้การเข้ารหัส latin1 (ISO 8859-1) และ£เป็นสัญลักษณ์สกุลเงินในขณะที่en_IE@euro
ใช้การเข้ารหัส latin9 (ISO 8859-15) และ€เป็นสัญลักษณ์สกุลเงิน
นอกจากนี้ยังมีสองชื่อสถานที่ที่มีอยู่ในทุกยูนิกซ์เช่นระบบ: และC
POSIX
ชื่อเหล่านี้มีความหมายเหมือนกันและมีความหมายว่าคอมพิวเตอร์คือการตั้งค่าเริ่มต้นที่เหมาะสมกับข้อมูลที่แยกวิเคราะห์โดยโปรแกรมคอมพิวเตอร์
การตั้งค่าสถานที่
หมวดหมู่โลแคลต่อไปนี้ถูกกำหนดโดยPOSIX :
LC_CTYPE
: ชุดอักขระที่ใช้งานโดยเทอร์มินัลแอพพลิเคชั่น: ข้อมูลการจำแนกประเภท (ตัวอักษรใดเป็นตัวอักษรเครื่องหมายวรรคตอนช่องว่างไม่ถูกต้อง ฯลฯ ) และการแปลงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ โดยทั่วไปยูทิลิตี้ข้อความจะLC_CTYPE
ต้องคำนึงถึงขอบเขตของอักขระ
LC_COLLATE
: การเรียงลำดับ (เช่นการเรียงลำดับ) การตั้งค่านี้ใช้อย่าง จำกัด ด้วยเหตุผลหลายประการ:
- ภาษาส่วนใหญ่มีกฎที่สลับซับซ้อนซึ่งขึ้นอยู่กับสิ่งที่จะถูกจัดเรียง (เช่นคำพจนานุกรมและชื่อที่เหมาะสมอาจไม่ใช้ลำดับเดียวกัน) และไม่สามารถแสดงออก
LC_COLLATE
ได้
- มีแอปพลิเคชั่นไม่กี่รายการที่มีเรื่องการเรียงลำดับที่เหมาะสมซึ่งดำเนินการโดยซอฟต์แวร์ที่ใช้การตั้งค่าภาษา ตัวอย่างเช่นโปรแกรมประมวลผลคำเก็บภาษาและการเข้ารหัสไฟล์ในไฟล์เอง (ไม่เช่นนั้นไฟล์จะไม่ถูกประมวลผลอย่างถูกต้องในระบบที่มีการตั้งค่าภาษาต่างกัน) และไม่สนใจการตั้งค่าภาษาที่ระบุโดยสภาพแวดล้อม
LC_COLLATE
สามารถมีผลข้างเคียงที่น่ารังเกียจโดยเฉพาะอย่างยิ่งเพราะมันทำให้เกิดการเรียงลำดับ A <a <B <…ซึ่งทำให้“ ระหว่าง A และ Z” รวมถึงตัวอักษรตัวเล็ก a ถึง y โดยเฉพาะอย่างยิ่งการแสดงออกปกติที่พบบ่อยมากชอบ[A-Z]
ทำลายบางโปรแกรม
LC_MESSAGES
: ภาษาของข้อมูลและข้อความแสดงข้อผิดพลาด
LC_NUMERIC
: การจัดรูปแบบตัวเลข: ทศนิยมและตัวคั่นหลักพัน
แอพพลิเคชั่นหลายตัวใช้รหัสฮาร์ท.
เป็นตัวคั่นทศนิยม สิ่งนี้LC_NUMERIC
ไม่ได้มีประโยชน์มากและอาจเป็นอันตราย:
- แม้ว่าคุณจะตั้งค่าไว้คุณจะยังคงเห็นรูปแบบเริ่มต้นค่อนข้างบ่อย
- คุณมีแนวโน้มที่จะเข้าสู่สถานการณ์ที่แอปพลิเคชันหนึ่งสร้างเอาต์พุตที่ขึ้นอยู่กับโลแคลและแอปพลิเคชันอื่นคาดว่า
.
จะเป็นจุดทศนิยมหรือ,
เป็นตัวคั่นฟิลด์
LC_MONETARY
: ชอบLC_NUMERIC
แต่สำหรับจำนวนเงินในท้องถิ่น
แอปพลิเคชั่นน้อยมากที่ใช้สิ่งนี้
LC_TIME
: การจัดรูปแบบวันที่และเวลา: ชื่อวันและเดือน, นาฬิกา 12 หรือ 24 ชั่วโมง, ส่วนของวันที่, เครื่องหมายวรรคตอน, ฯลฯ
GNU libc ซึ่งคุณจะพบบน Linux ที่ไม่ได้ฝังอยู่จะกำหนดหมวดหมู่ของสถานที่เพิ่มเติม:
LC_PAPER
: ขนาดกระดาษเริ่มต้น (กำหนดโดยความสูงและความกว้าง)
LC_NAME
, LC_ADDRESS
, LC_TELEPHONE
, LC_MEASUREMENT
, LC_IDENTIFICATION
: ผมไม่ทราบว่าของโปรแกรมใด ๆ ที่ใช้เหล่านี้
ตัวแปรสภาพแวดล้อม
แอปพลิเคชันที่ใช้การตั้งค่าภาษาจะพิจารณาจากตัวแปรสภาพแวดล้อม
- จากนั้นค่าของ
LANG
ตัวแปรสภาพแวดล้อมจะถูกใช้เว้นแต่จะถูกแทนที่ด้วยการตั้งค่าอื่น หากไม่ได้กำหนดสถานที่เริ่มต้นคือLANG
C
LC_xxx
ชื่อสามารถใช้เป็นตัวแปรสภาพแวดล้อม
- หาก
LC_ALL
ตั้งไว้ค่าอื่น ๆ ทั้งหมดจะถูกละเว้น สิ่งนี้มีประโยชน์เป็นหลักในการตั้งค่าLC_ALL=C
แอพพลิเคชั่นที่ต้องใช้งานเพื่อสร้างเอาต์พุตเดียวกันโดยไม่คำนึงถึงตำแหน่งที่รัน
- นอกจากนี้ GNU libc ใช้
LANGUAGE
เพื่อกำหนดทางเลือกสำหรับLC_MESSAGES
(เช่นLANGUAGE=fr_BE:fr_FR:en
เพื่อให้ชอบภาษาฝรั่งเศสเบลเยียมหรือหากไม่มีฝรั่งเศสฝรั่งเศสหรือหากไม่มีภาษาอังกฤษ)
การติดตั้งสถานที่
ข้อมูลโลแคลอาจมีขนาดใหญ่ดังนั้นการแจกแจงบางอย่างจะไม่จัดส่งในรูปแบบที่ใช้งานได้และต้องการขั้นตอนการติดตั้งเพิ่มเติมแทน
- ใน Debian, การติดตั้งสถานที่วิ่ง
dpkg-reconfigure locales
และเลือกจากรายการในกล่องโต้ตอบหรือแก้ไขและเรียกใช้/etc/locale.gen
locale-gen
- บน Ubuntu เพื่อติดตั้งโลแคลให้รัน
locale-gen
ด้วยชื่อของโลแคลเป็นอาร์กิวเมนต์
คุณสามารถกำหนดสถานที่ของคุณเอง
คำแนะนำ
การตั้งค่าที่มีประโยชน์คือ:
- ตั้งค่า
LC_CTYPE
เป็นภาษาและการเข้ารหัสที่คุณเข้ารหัสไฟล์ข้อความของคุณตรวจสอบให้แน่ใจว่าเทอร์มินัลของคุณใช้การเข้ารหัสนั้น
สำหรับภาษาส่วนใหญ่มีเพียงการเข้ารหัสเท่านั้น มีข้อยกเว้นเล็กน้อย ตัวอย่างเช่นตัวพิมพ์ใหญ่i
เป็นI
ภาษาส่วนใหญ่ แต่เป็นภาษาİ
ตุรกี ( tr_TR
)
- ตั้งค่า
LC_MESSAGES
เป็นภาษาที่คุณต้องการดูข้อความ
- ตั้งค่า
LC_PAPER
เป็นen_US
ถ้าคุณต้องการให้ US Letter เป็นขนาดกระดาษเริ่มต้นและจะเป็นขนาดอื่นก็ได้ (เช่นen_GB
) หากคุณต้องการ A4
- เลือกกำหนด
LC_TIME
เป็นรูปแบบเวลาที่คุณชื่นชอบ
ตามที่ได้อธิบายข้างต้นการตั้งค่าหลีกเลี่ยงและLC_COLLATE
LC_NUMERIC
ถ้าคุณใช้อย่างชัดเจนแทนที่ทั้งสองประเภทโดยการตั้งค่าให้พวกเขาLANG
C
LC_PAPER
ผมคิดว่าผมต้องแทนที่ค่าเริ่มต้นของ และฉันสามารถอัปเดตสิ่งนี้ข้ามระบบโดยไม่ต้องรีบูตเครื่องหรือไม่