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ụ:
en
tiếng Anh, de
tiếng Đức, ja
tiếng Nhật, uk
tiếng Ukraina, tiếng ber
Berber
- Đố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_UK
tiếng fr_CA
Canada (Québec) tiếng Pháp, de_DE
tiếng Đức của Đức, de_AT
tiếng Đức của Áo, ja_JP
cho 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-8
tiếng Trung Quốc (đơn giản hóa) được mã hóa bằng UTF-8, trong khi zh_CN
tiế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 @euro
biế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@euro
sử 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: C
và 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_NUMERIC
khô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
LANG
biến môi trường được sử dụng trừ khi bị ghi đè bởi cài đặt khác. Nếu LANG
không được đặt, ngôn ngữ mặc định là C
.
- Các
LC_xxx
tê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=C
cá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:en
thí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 locales
và chọn từ danh sách trong hộp thoại hoặc chỉnh sửa /etc/locale.gen
rồi chạy locale-gen
.
- Trên Ubuntu, để cài đặt các ngôn ngữ, hãy chạy
locale-gen
vớ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_CTYPE
thà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 i
là I
trong hầu hết các ngôn ngữ nhưng İ
ở Thổ Nhĩ Kỳ ( tr_TR
).
- Đặt
LC_MESSAGES
thành ngôn ngữ mà bạn muốn xem tin nhắn.
- Đặt
LC_PAPER
thành en_US
nế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_COLLATE
và 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?