Làm cách nào tôi có thể chuyển ngôn ngữ đầu ra lệnh từ ngôn ngữ mẹ đẻ của mình sang tiếng Anh, vì vậy tôi có thể đăng câu hỏi Ask Ubuntu của mình với đầu ra lệnh tiếng Anh (thông báo lỗi)?
Làm cách nào tôi có thể chuyển ngôn ngữ đầu ra lệnh từ ngôn ngữ mẹ đẻ của mình sang tiếng Anh, vì vậy tôi có thể đăng câu hỏi Ask Ubuntu của mình với đầu ra lệnh tiếng Anh (thông báo lỗi)?
Câu trả lời:
export LC_ALL=C
Là đủ. Tất cả đầu ra lệnh tiếp theo sẽ bằng tiếng Anh.
Thêm thông tin: "LC_ALL = C" làm gì?
Nếu bạn muốn trở lại ngôn ngữ bản địa, hãy bỏ đặt LC_ALL
biến:
unset LC_ALL
Đây là chức năng bash của tôi để chuyển đổi giữa các ngôn ngữ DE và EN.
Bạn có thể mở rộng mã này với các ngôn ngữ ưa thích của bạn. Để sử dụng, hãy đặt nó trong ~/.bashrc
(hoặc ~/.bash_profile
) -
Gọi nó với _configure_locale EN
để chuyển sang tiếng Anh.
function _configure_locale() { # [profile]
local profile=${1:-EN}
case ${profile} in
DE|DE_DE|de_DE)
LC_ALL="de_DE.UTF-8"
LANG="de_DE.UTF-8"
LANGUAGE="de_DE:de:en_US:en"
;;
EN|EN_US|en|en_US)
LC_ALL="en_US.UTF-8"
LANG="en_US.UTF-8"
LANGUAGE="en_US:en"
;;
*)
echo "ALERT" "${FUNCNAME}: unknown profile '${profile}'"
;;
esac
LC_PAPER="de_DE.UTF-8"; # independent from locale
LESSCHARSET="utf-8"; # independent from locale
MM_CHARSET="utf-8" # independent from locale
echo "locale settings" "${LANG}";
export LC_ALL LANG LANGUAGE LC_PAPER LESSCHARSET MM_CHARSET
}
Nói chung, tôi đề nghị để thay đổi tất cả 3 biến môi trường LC_ALL
, LANG
, LANGUAGE
để tránh misbehaviours của một số chương trình.
Mở rộng mã sang ngôn ngữ mẹ đẻ của bạn khá đơn giản. Bạn có thể tìm thấy các giá trị cần thiết bằng cách gọi lệnh sau
env |egrep -e 'LC_ALL|LANG'
case
và chỉ định đầu vào phù hợp với <lang>_<country>
định dạng. Sau đó, bạn có thể vượt qua nó, giả sử UTF-8. Nếu bạn thực sự quan tâm đến một giải pháp gọn gàng, có lẽ bạn nên kiểm tra đầu vào của người dùng locale -a
để đảm bảo vị trí được yêu cầu thực sự được cài đặt.
Mở terminal Ctrl+ Alt+ Tvà gõ:
LANG=en_US.UTF-8 bash
hoặc :
LC_ALL=C bash
Bây giờ đầu ra thiết bị đầu cuối là trong ngôn ngữ tiếng Anh. Bạn có thể kiểm tra nó với locale
.
Có thể thực hiện một lệnh để làm điều đó với vĩnh viễnalias
. Mở .bashrc
tệp bằng trình soạn thảo ưa thích của bạn và đặt đoạn mã sau vào đó:
alias basheng='LANG=en_US.UTF-8 bash'
hoặc :
alias basheng='LC_ALL=C bash'
Khởi động lại vỏ Bash. Bây giờ bạn có lệnh basheng
. Nhập nó vào Bash để lấy shell Bash tiếng Anh. Để loại vỏ tiếng Anh exit
.
Nguồn:
LANG
là không đủ để cơ hội tất cả các đầu ra.
LANG=en_US.UTF-8 && LC_ALL=en_US.UTF-8 && LANGUAGE=en_US.UTF-8 bash
tốt hơn?
LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LANGUAGE=en_US.UTF-8 $SHELL
.
Điều này được cấu hình thông qua cài đặt ngôn ngữ , có thể được đặt qua biến môi trường. Có bốn lớp biến; cái đầu tiên được đặt ưu tiên:
LANGUAGE
- không sử dụng nó, nó hiếm khi hữu ích và có thể gây ra lỗi. Thật không may, một số phiên bản của Ubuntu đã thiết lập nó, vì vậy bạn có thể cần phải hủy đặt nó.LC_ALL
- ghi đè cài đặt dành riêng cho danh mục, chủ yếu được sử dụng bởi các chương trình muốn chạy trong ngôn ngữ mặc định. Không có nghĩa là được sử dụng như cài đặt toàn cầu.LC_
: LC_CTYPE
, LC_MESSAGES
, LC_TIME
, ....LANG
- đặt ngôn ngữ mặc định cho tất cả các danh mục, nghĩa là được sử dụng trong cài đặt người dùng toàn cầu.Ngôn ngữ địa phương đơn giản, với tất cả các thông điệp chưa được dịch, định dạng số và thời gian mặc định, ASCII là bộ ký tự, v.v. được gọi C
. Địa phương này có mặt trên mọi hệ thống.
Vì vậy, để chạy một chương trình với các tin nhắn bằng tiếng Anh, hãy chạy
unset LANGUAGE; LC_MESSAGES=C myprogram --option
hoặc là
unset LANGUAGE
export LC_MESSAGES=C
myprogram --option
myotherprogram
Để chạy một chương trình với tất cả nội địa hóa đã tắt, hãy chạy
env -u LANGUAGE LC_ALL=C myprogram --option
nhưng hãy cẩn thận khi điều này chuyển mã hóa ký tự thành ASCII (vì vậy không có Unicode, latin-1, v.v.).
Xem Tôi nên đặt ngôn ngữ của mình ở đâu và ý nghĩa của việc làm này là gì? để biết tổng quan chi tiết hơn về các địa phương.
LANGUAGE
là nó được ưu tiên hơn LC_ALL
, điều này gây ra lỗi vì các chương trình được đặt LC_ALL
để có đầu ra dự đoán và sau đó bị nhầm lẫn vì chúng không nhận được đầu ra mong đợi.
LANGUAGE
Tuy nhiên, cài đặt là một ý tưởng tồi, bởi vì lợi ích rất mỏng trong khi các lỗi có thể gây khó chịu và khó tìm. Bạn nói đúng, tôi nên đề cập đến việc không đặt cược LANGUAGE
.
Cách dễ nhất là mở thiết bị đầu cuối bằng cách nhấn Alt + F2 và chạy lệnh này:
env LANGUAGE=en gnome-terminal
trong bạn ~/.bashrc
unset LC_ALL
export LC_MESSAGES=C
sau đó
source ~/.bashrc
Kiểm tra nó
$ locale
LANG=pl_PL.utf8
LANGUAGE=
LC_CTYPE="pl_PL.utf8"
LC_NUMERIC="pl_PL.utf8"
LC_TIME="pl_PL.utf8"
LC_COLLATE="pl_PL.utf8"
LC_MONETARY="pl_PL.utf8"
LC_MESSAGES=C
LC_PAPER="pl_PL.utf8"
LC_NAME="pl_PL.utf8"
LC_ADDRESS="pl_PL.utf8"
LC_TELEPHONE="pl_PL.utf8"
LC_MEASUREMENT="pl_PL.utf8"
LC_IDENTIFICATION="pl_PL.utf8"
LC_ALL=
Tại sao không đặt trước?
LC_ALL Ghi đè cài đặt LC_ * riêng lẻ: nếu LC_ALL được đặt, không có mục nào dưới đây có bất kỳ ảnh hưởng nào.
LANG
như thế này và điều đó có thể giúp ích, nhưng chúng tôi không yêu cầu các thông báo lỗi được sao chép bằng tiếng Anh. Chúng tôi yêu cầu những gì tác giả đã viết bằng tiếng Anh (mặc dù chúng tôi thường dịch nó thay vì đóng câu hỏi). Vì vậy, một câu hỏi được viết bằng tiếng Anh với văn bản thiết bị đầu cuối tiếng Tây Ban Nha là tốt, trong khi một câu hỏi được viết bằng tiếng Tây Ban Nha với văn bản thiết bị đầu cuối tiếng Anh thì không.