web-dev-qa-db-ja.com

LANGUAGE環境変数はどこに設定されていますか?

LANGUAGE環境変数はどの構成ファイルに設定されていますか? (または、他の方法でどのように変更できますか?)

背景:私はkubuntuの言語設定で遊んでいて、偶然ロシア語をインストールしました。今では完全に消えることはありません。はい、英語はGUIに表示されますが、コマンドラインではロシア語です。私が理解できる限りでは、それはLANGUAGE環境変数によるものです。 3行目を参照してください。

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=

LANGUAGEを除くすべてが正しく設定されています。ロケール/言語を構成する方法についてはいくつかの手順を実行しましたが、LANGUAGEは変更されていないようです(ただし、LANGなどの他の環境変数は変更されています)。したがって、ロケールの変更方法の概要には興味がありません。 LANGUAGEの変更方法を明確に知る必要があります(状況を完全に誤解していない限り)。価値があるため、LANGは/ etc/default/localeに設定されていますが、LANGUAGEは設定されていません。 (そこでLANGUAGEを設定しようとしましたが、どういうわけかオーバーライドされます。)LANGUAGEを手動でenに設定すると、その特定のシェルは正常に機能するため、変更する必要があるのはLANGUAGEだけだと思います。


編集:

明確にするために、/ etc/default/localeでLANGAUGEを設定します助けにはなりません。さらに、〜/ .pam_environmentは存在しません。

下記参照。 LANGUAGEは/ etc/default/localeで「en」に設定されます。マシンを再起動しました。/etc/default/localeの内容を確認しました。ただし、LANGUAGEが他の場所で上書きされたため(ロケールから上記の出力が生成されたため)、apt-getは引き続きロシア語で出力されます。

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

...

編集2:

〜/ .kde/env/setlocale.shが問題のようです。 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
7
lnmaurer

help.ubuntu.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.

リンクの答えとしては不十分であるように、 this はおそらくあなたが望むものです。

上記のリンクで参照されている投稿は、コマンドラインに表示される言語を変更する場合、/etc/default/localeまたは~/.pam_environmentLANGLANGUAGEの両方を適宜設定する必要があることを説明しています。

/etc/default/localeで既にLANGUAGEを設定しようとしているので、~/.pam_environmentで設定しようとします。これはユーザー構成ファイルであり、その内容はグローバル環境で設定されたものを上書きするからです。

編集:

私は先に進み、/etc/default/localeLANGUAGE"en:ru:en"に設定して、ログアウトしてからログインし直して、説明した問題を再現しようとしました。その後、少なくともルートアカウント(これをテストしているアカウント)については、ロシア語でエラーメッセージが表示されました。 LANGUAGEの値を"en"に変更すると修正されました。

3
Alexej Magura

LANGUAGE変数がru:enまたは/etc/default/localeの何かに設定されているように聞こえるので、そこにenだけに変更してみてください。

Alexej Maguraが書いた答えは、~/.pam_environmentにも言及しています。おそらく、Kubuntuがあるため、代わりに(または)他のファイルが関係している可能性があります。

1