Thông tin lai lịch
Tôi đã thử nghiệm giải pháp trên Fedora 21 với Gnome Shell 3.14.4, nhưng tôi tin rằng nó cũng có thể được áp dụng cho các phiên bản khác.
Điều đầu tiên cần hiểu là môi trường máy tính để bàn Gnome ghi đè các định nghĩa miền địa phương trên toàn hệ thống và do đó không bị ảnh hưởng /etc/locale.conf
. Ngoài ra, có thể có những ứng dụng có cấu hình ngôn ngữ riêng và hoàn toàn không sử dụng cài đặt hệ thống hoặc Gnome. Trong hướng dẫn này, tôi sẽ mô tả một cách để tùy chỉnh cài đặt ngôn ngữ theo nhu cầu của bạn và Gnome và hệ thống sẽ nhất quán theo quan điểm bản địa.
Kiểm tra tình trạng địa phương hiện tại
Cài đặt toàn hệ thống
Từ Hướng dẫn của Quản trị viên Hệ thống Fedora 21 :
Cài đặt ngôn ngữ toàn hệ thống được lưu trữ trong /etc/locale.conf
tệp, được đọc khi khởi động sớm bởi trình nền systemd . Các cài đặt ngôn ngữ được định cấu hình /etc/locale.conf
được kế thừa bởi mọi dịch vụ hoặc người dùng, trừ khi các chương trình riêng lẻ hoặc người dùng riêng lẻ ghi đè lên chúng.
Để xem trạng thái ngôn ngữ hiện tại, chúng ta có thể chạy:
$ localectl status
System Locale: LANG=en_US.UTF-8
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_US.UTF-8
LC_MONETARY=en_US.UTF-8
LC_PAPER=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
VC Keymap: us
X11 Layout: us
Cài đặt Gnome
$ gsettings get org.gnome.system.locale region
'en_US.UTF-8'
Gnome chỉ có một cài đặt. Bằng cách xem nhanh mã nguồn của trung tâm điều khiển gnome, có vẻ như khi set_localed_locale()
hàm được gọi, nó sẽ đặt tất cả các danh mục sau (LC_TIME, LC_NUMERIC, LC_MONETARY, LC_MEASUREMENT, LC_PAPER) vào cùng một địa điểm được xác định trong org.gnome.system.locale region
.
Việc trộn các cài đặt ngôn ngữ khác nhau dường như là không thể nếu không tạo một miền địa phương tùy chỉnh, nhưng may mắn thay, đó không phải là một nhiệm vụ quá phức tạp.
Tạo miền tùy chỉnh
Tôi nghĩ rằng cách dễ nhất để giải thích là ví dụ. Trong trường hợp cụ thể của tôi, tôi muốn có một ngôn ngữ tùy chỉnh, chủ yếu dựa trên tiếng Do Thái ( he_IL ) nhưng với LC_NAME, LC_MESSAGES từ en_US và LC_TIME (đã sửa đổi first_weekday
và first_workday
) từ en_GB .
Lấy tập tin định nghĩa miền địa phương
Bạn nên có một ý tưởng mà địa phương bạn muốn trộn. Đầu tiên chúng ta cần xác định vị trí các tệp định nghĩa liên quan, có thể tìm thấy trong /usr/share/i18n/locales/
. Quay lại ví dụ của tôi, tôi cần những điều sau đây: he_IL , en_US và en_GB . Tôi thiết lập một thư mục làm việc trong nhà của tôi và sao chép các tập tin cần thiết vào đó:
$ cd /usr/share/i18n/locales
$ mkdir -v ~/custom-locale ; cp -v he_IL en_US en_GB ~/custom-locale/
Tạo một tệp định nghĩa mới
Tôi quyết định gọi địa phương của mình là hc_IL và lấy he_IL làm cơ sở. Các dòng sau đây tạo một tệp mới hc_IL
với nội dung từ he_IL
và trên đường thay thế tất cả các lần xuất hiện của một chuỗi he_IL bên trong tệp bằng hc_IL .
$ cd ~/custom-locale/
$ sed 's/he_IL/hc_IL/g' he_IL > hc_IL
Sửa đổi tệp định nghĩa mới
Bây giờ chúng tôi có thể tùy chỉnh miền địa phương mới theo nhu cầu của chúng tôi. Mở tệp vừa tạo ~/custom-locale/hc_IL
bằng trình soạn thảo văn bản yêu thích của bạn. Tôi sử dụng vim (nó có tô sáng cú pháp thích hợp cho các tệp định nghĩa miền địa phương):
$ vim ~/custom-locale/hc_IL
Đối với những người chưa chọn trình soạn thảo yêu thích của họ và vim không phải là tách trà của họ, có thể sử dụng gedit :)
$ gedit ~/custom-locale/hc_IL
Cấu trúc tập tin không phức tạp lắm. Về cơ bản, nó được xây dựng từ các phần. Từ trang địa phương (5) trang man:
Định nghĩa miền địa phương có một phần cho mỗi loại miền địa phương. Mỗi phần có thể được sao chép từ một miền khác hiện có hoặc có thể được xác định từ đầu. Nếu danh mục cần được sao chép, từ khóa hợp lệ duy nhất trong định nghĩa sẽ được sao chép theo sau là tên của miền địa phương sẽ được sao chép.
Khái niệm về bản sao là rất hữu ích. Nó tiết kiệm thời gian và các tập tin kết quả là rõ ràng và súc tích. Ví dụ: thay vì sao chép toàn bộ các phần xung quanh, bạn có thể có:
LC_MESSAGES
copy "en_US"
END LC_MESSAGES
Tài liệu đầy đủ về tệp định nghĩa miền địa phương có thể được truy cập thông qua:
$ man 5 locale
Mặc dù, nếu bạn chỉ muốn tạo một miền địa phương tùy chỉnh, là sự pha trộn của các ngôn ngữ hiện có thì không cần phải hiểu từng chi tiết.
Trong trường hợp của tôi, tôi đã sửa đổi các danh mục và từ khóa sau:
LC_IDENTATIONATION
title "Custom Hebrew locale"
source "mydomain.ws"
address "http:////www.mydomain.ws"
contact ""
email "admin@mydomain.ws"
tel ""
fax ""
language "Hebrew"
territory "Israel"
revision "1.0"
date "2015-04-21"
Lưu ý: Tất cả các dòng " thể loại .. " trong phần LC_IDENTIFICATION đã được sửa đổi trong quá trình tạo tệp bằng cách sử dụng sed
. Vì vậy, chúng ta không cần phải chạm vào chúng nữa.
LC_TIME
Tôi đã sao chép phần hoàn chỉnh từ en_GB và chỉ sửa đổi các dòng chỉ ra ngày đầu tuần và ngày làm việc đầu tiên:
first_weekday 1
first_workday 1
Phần còn lại của các danh mục tôi để lại hoặc thay thế nội dung của chúng bằng chỉ thị sao chép như trong:
LC_NAME
copy "en_US"
END LC_NAME
Thế là xong, tập tin định nghĩa đã sẵn sàng. Đừng quên lưu tập tin :)
Biên dịch và sao chép ngôn ngữ mới
Quá trình biên dịch miền địa phương mới được thực hiện bằng lệnh sau dưới dạng root hoặc sử dụng sudo . Thay thế hc_IL
bằng ngôn ngữ của bạn:
$ sudo localedef -c -v -i hc_IL -f UTF-8 hc_IL.UTF-8
Nếu quá trình biên dịch thành công, dữ liệu miền địa phương đã biên dịch sẽ được thêm vào tệp lưu trữ /usr/lib/locale/locale-archive
.
Sao chép tệp định nghĩa miền địa phương mới vào thư mục định nghĩa miền địa phương. Thay thế hc_IL
bằng ngôn ngữ của bạn:
$ sudo cp -v hc_IL /usr/share/i18n/locales/
Kích hoạt Địa điểm mới
Trong bước này, chúng tôi muốn định cấu hình hệ thống và Gnome để sử dụng ngôn ngữ mới.
Cài đặt toàn hệ thống
Chỉnh sửa /etc/locale.conf
tệp dưới dạng root và đặt mọi dòng bắt đầu với LC_
ngôn ngữ mới của bạn. Ví dụ:
LANG=en_US.UTF-8
LC_NUMERIC=hc_IL.utf8
LC_TIME=hc_IL.utf8
LC_MONETARY=hc_IL.utf8
LC_PAPER=hc_IL.utf8
LC_MEASUREMENT=hc_IL.utf8
Cài đặt Gnome
Để kích hoạt miền địa phương mới trong Gnome, hãy chạy lệnh sau. Thay thế hc_IL
bằng ngôn ngữ của bạn:
$ gsettings set org.gnome.system.locale region "hc_IL.utf8"
Xác thực cài đặt mới
Bước cuối cùng là xác nhận rằng mọi thứ hoạt động như mong đợi. Để tải lại tất cả các cài đặt, dễ nhất đối với tôi là khởi động lại.
Lưu ý: Mọi thứ đã được thử nghiệm trên Fedora 21 với Gnome 3.14. Các bản phân phối Linux khác có thể yêu cầu các bước bổ sung hoặc khác nhau.
Hãy bình luận nếu bạn tìm thấy bất kỳ vấn đề với các hướng dẫn.