Chuyển ngôn ngữ đầu ra lệnh từ ngôn ngữ bản địa sang tiếng Anh


84

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)?


5
Điều này có phần sai lệch. Nó không thực sự cần thiết cho mọi người để làm điều này . (Nếu bạn nghĩ rằng chúng ta nên yêu cầu các OP tự gánh nặng theo cách này, vui lòng đăng lên meta trước khi hướng dẫn bất cứ ai làm như vậy.) Họ có thể thay đổi LANGnhư 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.
Eliah Kagan

4
@EliahKagan vâng, bạn đúng, nhưng dù sao tôi nghĩ nó hữu ích.
BuZZ-dEE

2
Tôi đồng ý, nó hữu ích cho mọi người để có thể làm điều này, và tốt là bạn đã đăng câu hỏi này! Tuy nhiên, đó là những người quan trọng biết chúng tôi không yêu cầu họ để làm điều này (nhưng đừng đòi hỏi rằng các câu hỏi và câu trả lời tự được viết bằng tiếng Anh).
Eliah Kagan

8
@EliahKagan Ngược lại, việc đăng thông báo lỗi thực tế là rất quan trọng và rất thích đăng chúng bằng tiếng Anh vì đó là những gì khán giả chính của trang web này có thể nhận ra và kiểm tra. (Và không bao giờ, không bao giờ đăng thông báo lỗi được dịch lại. Luôn sao chép-dán, vì từ ngữ chính xác, dấu câu, thậm chí khoảng cách có thể có ý nghĩa.)
Gilles

Câu trả lời:


74

export LC_ALL=CLà đủ. 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_ALLbiến:

unset LC_ALL

13

chức năng bash cho thiết bị đầu cuối

Đâ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.

Thích nghi với ngôn ngữ của bạn

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'

Kịch bản cần thay đổi cho ngôn ngữ khác ngoài tiếng Đức (DE)? Tôi tìm kiếm một giải pháp độc lập với ngôn ngữ bản địa.
BuZZ-dEE

@ BuZZ-dEE: Bạn có thể (và có lẽ nên) dễ dàng điều chỉnh điều này bằng cách loại bỏ casevà 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.
bitmask

@ buzz-dee: xem câu trả lời được cập nhật
H.-Dirk Schmitt

7

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ở .bashrctệ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:


Thiết lập LANGkhông đủ để cơ hội tất cả các đầu ra.
bitmask

@bitmask là thế này: LANG=en_US.UTF-8 && LC_ALL=en_US.UTF-8 && LANGUAGE=en_US.UTF-8 bashtốt hơn?
BuZZ-dEE

2
Trên thực tế, đó nên được LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LANGUAGE=en_US.UTF-8 $SHELL.
bitmask

Chỉ LC_ALL = C bash làm việc cho tôi.
lỏng

5

Đ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.
  • Biến loại cụ thể bắt đầu với 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.


Đừng sử dụng NGÔN NGỮ ?? Tôi không biết bạn đang sử dụng HĐH nào, nhưng trên Ubuntu LANGUAGE được sử dụng theo mặc định mọi lúc thông qua trình cài đặt và các GUI khác nhau. Những lỗi đó là những gì, btw? Tôi cũng đã đọc câu trả lời mà bạn liên kết đến và ngay cả khi nó chứa thông tin chung hữu ích, khuyến nghị đơn giản là lời khuyên không tốt trên máy tính để bàn Ubuntu.
Gunnar Hjalmarsson

@GunnarHjalmarsson Vấn đề chính LANGUAGElà 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.
Gilles

Chà, GUI của Ubuntu đặt cả LANG và LANGUAGE một cách nhất quán (và LC_MESSAGES kế thừa từ LANG), điều này phải ngăn chặn sự nhầm lẫn đó. Lý do tại sao LANGUAGE được đặt là Hỗ trợ ngôn ngữ có giao diện để đặt danh sách ưu tiên.
Gunnar Hjalmarsson

@GunnarHjalmarsson Tôi biết. LANGUAGETuy 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.
Gilles

Câu trả lời ở đây không phải là nơi thích hợp để tranh luận về các vấn đề thiết kế. Các cuộc thảo luận như vậy được tổ chức tốt hơn tại ví dụ ubfox-devel-thảo luận . Để hữu ích cho người dùng, tôi thực sự nghĩ rằng một câu trả lời nên dựa trên thiết kế hiện tại, cho dù bạn nghĩ nó có tối ưu hay không. Và xin lưu ý rằng "một số phiên bản" là tất cả các phiên bản được hỗ trợ của máy tính để bàn và các dẫn xuất của Ubuntu, có thể ngoại trừ Kubfox.
Gunnar Hjalmarsson

1

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

1

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.

https://help.ubfox.com/community/Locale


Tôi không biết tại sao câu trả lời này bị hạ thấp. Vâng, nó có thể sử dụng một số giải thích thêm, nhưng không giống như câu trả lời được chấp nhận, nó cho thấy làm thế nào để làm cho nó vĩnh viễn và cụ thể hơn.
Xerus

0
  1. Nhấp vào biểu tượng bánh răng bên trái (cài đặt hệ thống trên bảng Unity)
  2. Bấm vào Hỗ trợ ngôn ngữ
  3. Chọn định dạng khu vực
  4. Đặt "Hiển thị số, ngày và số tiền ..." thành tiếng Anh.
  5. Đăng xuất phiên và Đăng nhập lại (Bắt buộc!)

Làm xong.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.