สถานที่เกิดเหตุการตั้งค่ามีค่าของผู้ใช้ที่เกี่ยวข้องกับวัฒนธรรมของคุณ
ชื่อโลแคล
ในตัวแปรยูนิกซ์ปัจจุบันทั้งหมดที่ฉันรู้จัก (แต่ไม่ใช่ของโบราณ), ชื่อโลแคลตามรูปแบบเดียวกัน:
- 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ตัวแปรสภาพแวดล้อมจะถูกใช้เว้นแต่จะถูกแทนที่ด้วยการตั้งค่าอื่น หากไม่ได้กำหนดสถานที่เริ่มต้นคือLANGC
LC_xxxชื่อสามารถใช้เป็นตัวแปรสภาพแวดล้อม
- หาก
LC_ALLตั้งไว้ค่าอื่น ๆ ทั้งหมดจะถูกละเว้น สิ่งนี้มีประโยชน์เป็นหลักในการตั้งค่าLC_ALL=Cแอพพลิเคชั่นที่ต้องใช้งานเพื่อสร้างเอาต์พุตเดียวกันโดยไม่คำนึงถึงตำแหน่งที่รัน
- นอกจากนี้ GNU libc ใช้
LANGUAGEเพื่อกำหนดทางเลือกสำหรับLC_MESSAGES(เช่นLANGUAGE=fr_BE:fr_FR:enเพื่อให้ชอบภาษาฝรั่งเศสเบลเยียมหรือหากไม่มีฝรั่งเศสฝรั่งเศสหรือหากไม่มีภาษาอังกฤษ)
การติดตั้งสถานที่
ข้อมูลโลแคลอาจมีขนาดใหญ่ดังนั้นการแจกแจงบางอย่างจะไม่จัดส่งในรูปแบบที่ใช้งานได้และต้องการขั้นตอนการติดตั้งเพิ่มเติมแทน
- ใน Debian, การติดตั้งสถานที่วิ่ง
dpkg-reconfigure localesและเลือกจากรายการในกล่องโต้ตอบหรือแก้ไขและเรียกใช้/etc/locale.genlocale-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ถ้าคุณใช้อย่างชัดเจนแทนที่ทั้งสองประเภทโดยการตั้งค่าให้พวกเขาLANGC
LC_PAPERผมคิดว่าผมต้องแทนที่ค่าเริ่มต้นของ และฉันสามารถอัปเดตสิ่งนี้ข้ามระบบโดยไม่ต้องรีบูตเครื่องหรือไม่