Câu trả lời này sẽ trình bày cách tùy chỉnh hoàn toàn một miền, tùy ý sử dụng miền địa phương hiện tại làm cơ sở. Loại ngôn ngữ sẽ được sử dụng trong câu trả lời này là i18n
loại; loại ngôn ngữ như vậy sẽ được ngụ ý trong mỗi lần đề cập đến từ "miền địa phương" trong phần thân của câu trả lời.
Tìm một hướng dẫn
Điều đầu tiên bạn cần tùy chỉnh một miền, là tìm hiểu định dạng của miền địa phương. Trình chỉnh sửa ngôn ngữ web này có một mô tả toàn diện về mọi lĩnh vực trong một miền địa phương, mặc dù không ai có thể sử dụng được theo cách ngay lập tức. Đây sẽ là hướng dẫn sử dụng.
Công cụ cần thiết
Các công cụ duy nhất bạn cần để làm việc với các địa phương là
- Một trình soạn thảo văn bản. Bất cứ điều gì sẽ làm, mặc dù VIM sẽ xuất sắc.
- Một trình chuyển đổi văn bản thành unicode. Nó sẽ được mong đợi nhất là bạn không có, vì vậy tôi sẽ cung cấp cho bạn một cái đơn giản. Đọc tiểu mục tiếp theo để có được nó.
Tôi khuyên bạn nên tạo một thư mục và lưu mọi thứ liên quan đến công việc bạn sẽ làm trên ngôn ngữ đó.
Trình chuyển đổi văn bản thành unicode (encodestr)
LƯU Ý: nếu bạn đang sử dụng các ký tự không phổ biến, bạn có thể gặp vấn đề với tập lệnh tôi viết bên dưới; bạn có thể muốn xem các tập lệnh thay thế được liên kết bởi nass .
Lưu mã sau vào một tập tin. Tập tin này sẽ được hệ thống của bạn xác định là tập lệnh python, không sao vì nó là tập lệnh. Hướng dẫn này giả định bạn đã gọi kịch bản encodestr
.
#!/usr/bin/python
def encode(string):
newstring = str()
for ch in string:
newstring += "<U%04X>" % ord(ch)
return newstring
if __name__ == '__main__':
import sys
print encode(sys.argv[1])
Sau khi bạn đã lưu nó, hãy cho phép thực thi tập tin - điều này sẽ có ích. Bạn có thể làm điều đó bằng cách sử dụng nautilus hoặc bằng cách chạy từ một thiết bị đầu cuối lệnh sau, trên thư mục mà bạn đã lưu tập lệnh : chmod +x encodestr
.
Bây giờ bạn có thể kiểm tra tập lệnh này bằng cách chạy trên cùng một thư mục : ./encodestr hello
. Bạn sẽ nhận được một đầu ra bằng <U0068><U0065><U006C><U006C><U006F>
.
Sửa đổi một miền địa phương hiện có
Sửa đổi một miền địa phương hiện tại là trường hợp dễ nhất, vì lý tưởng nhất là bạn sẽ chọn một miền phù hợp với nhu cầu của mình gần như hoàn toàn, trong trường hợp đó bạn chỉ cần thực hiện các sửa đổi nhỏ. Để điều chỉnh nó, bạn có thể sử dụng hướng dẫn để biết phần nào là phần bạn muốn thay đổi và cách bạn có thể thay đổi chúng. Tất cả các địa điểm được cài đặt nằm trong /usr/share/i18n/locales
, tuy nhiên hướng dẫn chứa khá nhiều địa điểm từng được tạo.
Tuy nhiên, điều đầu tiên bạn sẽ nhận thấy khi bạn mở một miền địa phương là bạn sẽ đọc các từ tiếng Anh nhiều như <UXXXX>
các mã lạ . Bạn sẽ cần có khả năng tạo các mã này - đây là nơi encodestr
tập lệnh xuất hiện.
Khi bạn biết phần nào bạn phải thay đổi, bạn cần biết từng trường có trong phần đó.
Ví dụ: LC_TIME
phần chứa trường t_fmt
và nhiều phần khác. Mỗi lĩnh vực có mô tả riêng về hướng dẫn .
Bây giờ bạn đã biết trường nào cần sửa đổi, hãy sử dụng lại hướng dẫn để tìm ra giá trị nào mà trường chấp nhận.
Ví dụ, trường t_fmt
chấp nhận văn bản và các biến strfmt phổ biến .
Chỉ khi bạn biết phải viết gì trên các trường bạn muốn sửa đổi, hãy chạy văn bản thông qua encodestr
tập lệnh để có được mã hóa tương đương.
LƯU Ý: Không phải mọi trường đều cần được mã hóa, hãy sử dụng ngôn ngữ hiện có làm tài liệu tham khảo nếu cần.
Ví dụ: nếu bạn muốn có định dạng thời gian Time: %T
trong t_fmt
trường, hãy chạy ./encodestr "Time: %T"
; điều này sẽ trở lại <U0054><U0069><U006D><U0065><U003A><U0020><U0025><U0054>
và do đó bạn sẽ có dòng t_fmt <U0054><U0069><U006D><U0065><U003A><U0020><U0025><U0054>
trong miền địa phương của bạn (tất nhiên trong phần tương ứng của nó).
Sau khi bạn đã sửa đổi mọi trường bạn muốn, bạn sẽ cần tiến hành cài đặt miền địa phương vào hệ thống, để nó có thể được sử dụng. Tiến hành phần cài đặt cho việc này.
Tạo một miền địa phương từ đầu
Trái ngược với sửa đổi một phương pháp, phương pháp khác bạn có thể sử dụng để tạo ngôn ngữ tùy chỉnh của mình là làm việc từ đầu. Điều này không khó lắm nếu - một lần nữa - bạn sử dụng hướng dẫn . Đây là một mẹo hữu ích: bạn có thể sao chép các phần từ các địa phương khác mà không cần các phương pháp sao chép và dán thực tế . Bạn chỉ cần làm theo định dạng này:
LC_SECTION
copy "locale"
END LC_SECTION
Trong trường hợp LC_SECTION
là phần bạn muốn thay đổi, và locale
là địa mà bạn muốn sao chép rằng đoạn từ.
Ví dụ: nếu bạn muốn sao chép định dạng thời gian trong ngôn ngữ tiếng Anh, bạn sẽ có văn bản này tệp địa phương tùy chỉnh của bạn:
LC_TIME
copy "en_GB"
END LC_TIME
Và điều đó giúp bạn tiết kiệm rất nhiều công việc và đảm bảo rằng mọi thay đổi được thực hiện đối với ngôn ngữ được tham chiếu sẽ được nhân đôi cho bạn.
Cài đặt ngôn ngữ tùy chỉnh của bạn
Các bước tôi sẽ trình bày dưới đây có thể không tối ưu, nhưng hiệu quả.
Biên dịch ngôn ngữ của bạn. Đừng hoảng sợ! Điều này không mất thời gian. Chỉ cần chạy lệnh sudo localedef -i custom -f UTF-8 custom.UTF-8 -c -v
nơi custom
tên của miền địa phương của bạn.
Sao chép ngôn ngữ của bạn vào /usr/share/i18n/locales/
thư mục. Bạn chắc chắn sẽ cần sudo privateiledges để làm điều này và bạn có thể làm điều đó với lệnh sudo cp locale /usr/share/i18n/locales/
nơi locale
tên tệp của miền địa phương tùy chỉnh của bạn.
Chỉ định miền địa phương của bạn trong /var/lib/locales/supported.d/
. Ví dụ: tạo một tên tệp /var/lib/locales/supported.d/asd
và thêm dòng custom UTF-8
, trong đó tùy chỉnh là tên miền địa phương của bạn.
Chạy lệnh ma thuật. Tôi thực sự không biết chính xác lệnh này làm gì, nhưng nó rất quan trọng. Chạy đi sudo locale-gen
. Rất có thể nó tạo ra các tham chiếu đến các địa điểm có sẵn khi cần thiết.
Nói cho hệ thống của bạn sử dụng miền địa phương. Nếu bạn muốn ngôn ngữ được sử dụng theo cách toàn hệ thống, hãy sửa đổi /etc/environment
tệp. Nếu không, bạn có thể sửa đổi ~/.profile
tệp của mình hoặc bất kỳ tệp nào có nguồn gốc khi khởi động. Nếu bạn không biết điều sau có nghĩa là đừng lo lắng, chỉ cần sử dụng ~/.profile
tệp. Để biết những gì bạn phải viết trong đó, trước tiên hãy chạy locale
lệnh. Cần ban hành một danh sách với các mục như LANGUAGE
, LC_MESSAGES
, LC_CTYPE
và nhiều người khác. Bạn sẽ viết, cho mỗi phần bạn muốn (được liệt kê bởi các lệnh trước đó), trên dòng riêng biệt, điều này SECTION="locale"
đâu SECTION
là phần và locale
tên của miền địa phương tùy chỉnh của bạn.
Ví dụ: nếu bạn muốn sử dụng định dạng thời gian từ Hà Lan, nhưng ngôn ngữ tiếng Anh, hãy viết:
LANGUAGE="en_GB:en"
LC_TIME="nl_NL"
Chú ý: Nếu bạn muốn sử dụng một ngôn ngữ cho mỗi thiết lập miền địa phương, ghi LC_ALL="locale"
nơi locale
là tên của miền địa phương tùy chỉnh của bạn. Nếu bạn muốn sử dụng ngôn ngữ cho tất cả mọi thứ trừ ngôn ngữ, bạn có thể viết LANG="locale"
và (trên một dòng khác, tất nhiên) LANGUAGE="locale":XX
, nơi XX
có mã 2 chữ cái cho ngôn ngữ bạn muốn.
Ví dụ: nếu bạn muốn sử dụng ngôn ngữ Hà Lan và tiếng Anh, bạn có thể sử dụng:
LANG="nl_NL"
LANGUAGE="nl_NL:en"
Bạn đã hoàn thành
Lần sau khi bạn đăng nhập, ngôn ngữ của bạn sẽ được sử dụng. Bạn có thể kiểm tra điều này bằng cách chạy lại locale
lệnh.
Hãy bình luận về sự không nhất quán hoặc tuyên bố sai trong hướng dẫn này!
πμ
, nó xuất ra<U00CF><U0080><U00CE><U00BC>
, thay vì các ký tự dự kiến<U03C0><U03BC>
. Đây là một liên kết hoạt động.