Biến môi trường LANGUAGE được đặt ở đâu?


9

Trong tập tin cấu hình nào là biến môi trường LANGUAGE được đặt? (Hoặc làm thế nào tôi có thể thay đổi nó bằng cách khác?)

Bối cảnh: Tôi đang chơi xung quanh với các cài đặt ngôn ngữ trong kubfox và cài đặt tiếng Nga một cách tình cờ. Bây giờ nó sẽ không hoàn toàn biến mất. Vâng, tiếng Anh xuất hiện trong GUI, nhưng đó là tiếng Nga trên dòng lệnh. Theo cách tốt nhất tôi có thể hình dung, đó là do biến môi trường LANGUAGE. Xem dòng thứ ba:

leon@leon-Desktop:~$ locale
LANG=en_US.UTF-8
LANGUAGE=en:ru:en
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_US.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=en_US.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=en_US.UTF-8
LC_NAME=en_US.UTF-8
LC_ADDRESS=en_US.UTF-8
LC_TELEPHONE=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
LC_IDENTIFICATION=en_US.UTF-8
LC_ALL=

Mọi thứ được đặt chính xác ngoại trừ NGÔN NGỮ. Tôi đã trải qua một số hướng dẫn về cách định cấu hình ngôn ngữ / ngôn ngữ, nhưng dường như không có gì thay đổi NGÔN NGỮ (mặc dù chúng đã thay đổi các biến môi trường khác, như LANG). Vì vậy, tôi không quan tâm đến tổng quan về cách thay đổi ngôn ngữ. Tôi cần biết cụ thể cách thay đổi NGÔN NGỮ (trừ khi tôi hoàn toàn hiểu sai tình huống). Đối với giá trị của nó, LANG được đặt ở / etc / default / locale, nhưng LANGUAGE không được đặt ở đó. .


BIÊN TẬP:

Chỉ cần làm rõ, đặt LANGAUGE trong / etc / default / locale không giúp ích gì . Ngoài ra, ~ / .pam_en môi trường không tồn tại.

Xem bên dưới. LANGUAGE được đặt thành "en" trong / etc / default / locale. Tôi khởi động lại máy. Tôi đã xác minh nội dung của / etc / default / locale. Tuy nhiên, apt-get vẫn xuất ra tiếng Nga vì LANGUAGE đã bị ghi đè ở nơi khác (tạo ra đầu ra trên từ miền địa phương).

leon@leon-Desktop:~$ cat /etc/default/locale 
LANG="en_US.UTF-8"
LANGUAGE="en"
leon@leon-Desktop:~$ cat ~/.pam_environment
cat: /home/leon/.pam_environment: No such file or directory
leon@leon-Desktop:~$ sudo apt-get update
Игн http://mirror.anl.gov utopic InRelease

...

EDIT 2:

Có vẻ như ~ / .kde / env / setlocale.sh là thủ phạm. Tôi đoán tôi sẽ nộp báo cáo lỗi KDE.

$ cat ~/.kde/env/setlocale.sh
export LANGUAGE=en:ru:en
export LANG=en_US.UTF-8
export LC_NUMERIC=en_US.UTF-8
export LC_TIME=en_US.UTF-8
export LC_MONETARY=en_US.UTF-8
export LC_PAPER=en_US.UTF-8
export LC_IDENTIFICATION=en_US.UTF-8
export LC_NAME=en_US.UTF-8
export LC_ADDRESS=en_US.UTF-8
export LC_TELEPHONE=en_US.UTF-8
export LC_MEASUREMENT=en_US.UTF-8

Câu trả lời:


5

Lấy từ help.ubfox.com

The LANGUAGE priority list

The "LANGUAGE" environment variable, which is set by the GUIs more often than not on 
Ubuntu desktops, controls language for message and menu display for GNU compatible 
applications. For such applications it overrides whatever locale names are set in 
"LANG" and "LC_MESSAGES".

Unlike "LANG" and "LC_*", "LANGUAGE" should not be assigned a complete locale name 
including the encoding part (e.g. ".UTF-8"). Instead "LANGUAGE" should contain a 
colon separated priority list of language codes, for instance "es:de:en". A single 
language code is also correct.

Như một câu trả lời liên kết là khập khiễng, đây có lẽ là những gì bạn muốn.

Bài đăng được tham chiếu trong liên kết ở trên giải thích rằng nếu bạn muốn thay đổi ngôn ngữ xuất hiện trên dòng lệnh thì bạn cần phải đặt cả hai LANGLANGUAGEtheo đó theo một trong hai /etc/default/localehoặc ~/.pam_environment.

Kể từ khi bạn đã cố gắng thiết lập LANGUAGEtrong /etc/default/locale, tôi muốn thử thiết lập nó trong ~/.pam_environmentvì đó là một tập tin người sử dụng cấu hình và nội dung của nó nên ghi đè lên bất cứ điều gì thiết lập trong môi trường toàn cầu.

BIÊN TẬP:

Tôi đã đi trước và cố gắng sao chép các vấn đề mà bạn mô tả bằng cách thiết lập LANGUAGEtrong /etc/default/localeđể "en:ru:en"đăng xuất và sau đó đăng nhập lại. Nó làm việc. Thông báo lỗi sau đó được hiển thị bằng tiếng Nga, ít nhất là cho tài khoản root (là tài khoản tôi đang kiểm tra điều này). Thay đổi giá trị của LANGUAGEđể "en"cố định nó.


Thật không may, như tôi đã lưu ý, đặt biến trong / etc / default / locale là không đủ. (Xem bài viết gốc và chỉnh sửa để làm rõ.) Rõ ràng, biến bị ghi đè ở đâu đó và tôi cần biết nơi đó ở đâu.
lnmaurer

@lnmaurer Tôi biết. Bạn đã thử đặt nó vào ~/.pam_environment? Tôi thấy bình luận của bạn về nó không tồn tại. Bạn có thể thử grep LANGUAGE /etc -r | lessvà sau đó đi qua và kiểm tra thủ công từng trường hợp LANGUAGE. Ngoài ra, hãy chắc chắn kiểm tra ~/.profile~/.xsessionrc
Alexej Magura

2
Tôi lấy lời khuyên của bạn grepping. /etckhông có gì, nhưng grepping thư mục nhà của tôi bật lên /.kde/env/setlocale.sh. Có vẻ như đó là vấn đề.
lnmaurer

1

Có vẻ như bạn có LANGUAGEbiến được đặt thành ru: en hoặc một cái gì đó trong /etc/default/locale, vì vậy hãy thử thay đổi nó ở đó để chỉ en.

Câu trả lời, mà Alexej Magura đã viết, cũng đề cập đến ~/.pam_environment. Có thể, vì bạn có Kubfox, các tệp khác có thể được tham gia thay thế (hoặc cũng có thể).


~ / .pam_en môi trường không tồn tại đối với tôi. Bất kỳ suy nghĩ khác cho các tập tin có thể được đổ lỗi?
lnmaurer

@lnmaurer: Có thể ~/.kde/share/config/kcmlocale-groupingcó một cái gì đó để làm với nó. Nó có thể được thay đổi thông qua Cài đặt hệ thống -> Địa điểm -> Ngôn ngữ.
Gunnar Hjalmarsson

1
Bạn đúng rằng đó là một cái gì đó KDE cụ thể. Có vẻ như đó ~/.kde/env/setlocale.shlà vấn đề.
lnmaurer
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.