Locale thiết lập được sở thích người dùng có liên quan đến văn hóa của bạn.
Tên địa phương
Trên tất cả các biến thể unix hiện tại mà tôi biết (nhưng không phải trên một vài cổ vật), tên miền địa phương theo cùng một mẫu:
- Một tiêu chuẩn ISO 639-1 chữ thường hai chữ cái mã ngôn ngữ, hoặc một tiêu chuẩn ISO 639-2 ba ký tự mã ngôn ngữ nếu ngôn ngữ không có mã hai chữ cái. Ví dụ:
entiếng Anh, detiếng Đức, jatiếng Nhật, uktiếng Ukraina, tiếng berBerber
- Đối với nhiều người nhưng không phải tất cả các ngôn ngữ, một dấu gạch dưới được
_theo sau bởi mã quốc gia gồm hai chữ cái viết hoa ISO 3166 . Do đó: en_USđối với tiếng Anh Mỹ, tiếng Anh Anh, en_UKtiếng fr_CACanada (Québec) tiếng Pháp, de_DEtiếng Đức của Đức, de_ATtiếng Đức của Áo, ja_JPcho tiếng Nhật (của Nhật Bản), v.v.
- Tùy chọn, một dấu chấm
.theo sau là tên của một nhân vật mã hóa như UTF-8, ISO-8859-1, KOI8-U, GB2312, Big5, vv Với GNU libc ít nhất (Tôi không biết làm thế nào rộng rãi này là), trường hợp và cách chấm câu bị bỏ qua trong mã hóa tên. Ví dụ: zh_CN.UTF-8tiếng Trung Quốc (đơn giản hóa) được mã hóa bằng UTF-8, trong khi zh_CNtiếng Trung Quốc được mã hóa bằng GB2312 và tiếng Trung Quốc zh_TW(truyền thống) được mã hóa trong Big5.
- Tùy chọn, một dấu hiệu
@theo sau là tên của một biến thể. Ý nghĩa của các biến thể là phụ thuộc địa phương. Ví dụ, nhiều quốc gia châu Âu có một @eurobiến thể địa phương trong đó ký hiệu tiền tệ là € và mã hóa là một ký tự bao gồm ký tự này (ISO 8859-15 hoặc ISO 8859-16), trái ngược với biến thể không được cung cấp với ký hiệu tiền tệ cũ hơn. Ví dụ: en_IE(tiếng Anh, Ireland) sử dụng mã hóa latin1 (ISO 8859-1) và £ làm ký hiệu tiền tệ trong khi en_IE@eurosử dụng mã hóa latin9 (ISO 8859-15) và € làm ký hiệu tiền tệ.
Ngoài ra, có hai tên miền địa phương tồn tại trên tất cả các hệ thống giống như unix: Cvà POSIX. Các tên này đồng nghĩa và có nghĩa là máy tính, nghĩa là các cài đặt mặc định phù hợp với dữ liệu được phân tích cú pháp bởi một chương trình máy tính.
Cài đặt ngôn ngữ
Các loại ngôn ngữ sau được định nghĩa bởi POSIX :
LC_CTYPE: bộ ký tự được sử dụng bởi các ứng dụng đầu cuối: dữ liệu phân loại (ký tự nào là chữ cái, dấu chấm câu, dấu cách, không hợp lệ, v.v.) và chuyển đổi trường hợp. Tiện ích văn bản thường chú ý LC_CTYPEđể xác định ranh giới ký tự.
LC_COLLATE: collation (tức là sắp xếp) thứ tự. Cài đặt này được sử dụng rất hạn chế vì nhiều lý do:
- Hầu hết các ngôn ngữ có các quy tắc phức tạp phụ thuộc vào nội dung đang được sắp xếp (ví dụ: từ trong từ điển và tên riêng có thể không sử dụng cùng một thứ tự) và không thể được biểu thị bằng
LC_COLLATE.
- Có một số ứng dụng trong đó các vấn đề sắp xếp thứ tự phù hợp được thực hiện bởi phần mềm sử dụng cài đặt ngôn ngữ. Ví dụ: bộ xử lý văn bản lưu trữ ngôn ngữ và mã hóa tệp trong chính tệp đó (nếu không tệp sẽ không được xử lý chính xác trên hệ thống có cài đặt ngôn ngữ khác nhau) và không quan tâm đến cài đặt ngôn ngữ được chỉ định bởi môi trường.
LC_COLLATEđặc biệt có thể có các tác dụng phụ khó chịu, đặc biệt là vì nó gây ra thứ tự sắp xếp A <a <B <, điều này làm cho mối quan hệ giữa A và Z. bao gồm các chữ cái viết thường từ a đến y. Đặc biệt, các biểu thức chính quy rất phổ biến như [A-Z]phá vỡ một số ứng dụng .
LC_MESSAGES: ngôn ngữ của thông báo lỗi và thông tin.
LC_NUMERIC: định dạng số: số thập phân và dấu phân cách hàng nghìn.
Nhiều ứng dụng mã cứng .như một dấu tách thập phân. Điều này làm cho LC_NUMERICkhông hữu ích và có khả năng nguy hiểm:
- Ngay cả khi bạn đặt nó, bạn vẫn sẽ thấy định dạng mặc định khá thường xuyên.
- Bạn có thể gặp phải tình huống trong đó một ứng dụng tạo đầu ra phụ thuộc vào miền địa phương và một ứng dụng khác dự kiến
.là dấu thập phân hoặc ,là dấu tách trường.
LC_MONETARY: thích LC_NUMERIC, nhưng đối với số lượng nội tệ.
Rất ít ứng dụng sử dụng cái này.
LC_TIME: định dạng ngày và giờ: tên ngày trong tuần và tháng, đồng hồ 12 hoặc 24 giờ, thứ tự các phần ngày, dấu chấm câu, v.v.
GNU libc, mà bạn sẽ tìm thấy trên Linux không nhúng, xác định các danh mục địa phương bổ sung:
LC_PAPER: kích thước giấy mặc định (được xác định theo chiều cao và chiều rộng).
LC_NAME, LC_ADDRESS, LC_TELEPHONE, LC_MEASUREMENT, LC_IDENTIFICATION: Tôi không biết về bất kỳ ứng dụng sử dụng chúng.
Biến môi trường
Các ứng dụng sử dụng cài đặt ngôn ngữ xác định chúng từ các biến môi trường.
- Sau đó, giá trị của
LANGbiến môi trường được sử dụng trừ khi bị ghi đè bởi cài đặt khác. Nếu LANGkhông được đặt, ngôn ngữ mặc định là C.
- Các
LC_xxxtên có thể được sử dụng như các biến môi trường.
- Nếu
LC_ALLđược đặt, thì tất cả các giá trị khác sẽ bị bỏ qua; điều này chủ yếu hữu ích để thiết lập LC_ALL=Ccác ứng dụng chạy cần tạo ra cùng một đầu ra bất kể chúng chạy ở đâu.
- Ngoài ra, GNU libc sử dụng
LANGUAGE để xác định dự phòng cho LC_MESSAGES(ví dụ: LANGUAGE=fr_BE:fr_FR:enthích tiếng Pháp của Bỉ hoặc nếu tiếng Pháp không có tiếng Pháp hoặc nếu không có tiếng Anh).
Cài đặt địa phương
Dữ liệu bản địa có thể lớn, vì vậy một số bản phân phối không gửi chúng dưới dạng có thể sử dụng được và thay vào đó yêu cầu một bước cài đặt bổ sung.
- Trên Debian, để cài đặt các ngôn ngữ, hãy chạy
dpkg-reconfigure localesvà chọn từ danh sách trong hộp thoại hoặc chỉnh sửa /etc/locale.genrồi chạy locale-gen.
- Trên Ubuntu, để cài đặt các ngôn ngữ, hãy chạy
locale-genvới tên của các miền làm đối số.
Bạn có thể xác định miền địa phương của riêng bạn .
sự giới thiệu
Các cài đặt hữu ích là:
- Đặt
LC_CTYPEthành ngôn ngữ và mã hóa mà bạn mã hóa các tệp văn bản của mình. Đảm bảo rằng các thiết bị đầu cuối của bạn sử dụng mã hóa đó.
Đối với hầu hết các ngôn ngữ, chỉ có vấn đề mã hóa. Có một vài trường hợp ngoại lệ; ví dụ, một chữ hoa ilà Itrong hầu hết các ngôn ngữ nhưng İở Thổ Nhĩ Kỳ ( tr_TR).
- Đặt
LC_MESSAGESthành ngôn ngữ mà bạn muốn xem tin nhắn.
- Đặt
LC_PAPERthành en_USnếu bạn muốn Thư Hoa Kỳ là khổ giấy mặc định và gần như mọi thứ khác (ví dụ en_GB) nếu bạn muốn A4.
- Tùy chọn, đặt thành
LC_TIMEđịnh dạng thời gian yêu thích của bạn.
Như đã giải thích ở trên, tránh thiết lập LC_COLLATEvà LC_NUMERIC. Nếu bạn sử dụng LANG, ghi đè rõ ràng hai danh mục này bằng cách đặt chúng thành C.
LC_PAPER. Và tôi có thể cập nhật điều này trên toàn hệ thống mà không cần khởi động lại không?