LANGUAGE环境变量在哪里设置?


9

在哪个配置文件中设置LANGUAGE环境变量?(或者如何通过其他方式更改它?)

背景:我正在玩kubuntu中的语言设置,并偶然安装了俄语。现在它不会完全消失。是的,GUI中显示英语,但在命令行中显示俄语。尽我所能,这是由于LANGUAGE环境变量引起的。参见第三行:

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=

除语言外,其他所有设置均正确。我已经阅读了许多有关如何配置语言环境/语言的说明,但是似乎没有什么改变语言(尽管它们已经改变了其他环境变量,例如LANG)。因此,我对如何更改语言环境的概述不感兴趣。我需要特别知道如何更改语言(除非我完全误解了情况)。值得的是,LANG是在/ etc / default / locale中设置的,但是LANGUAGE却没有在其中设置。(我尝试在那里设置LANGUAGE,但由于某种原因它被覆盖了。)如果我手动将LANGUAGE设置为en,则该特定Shell可以正常工作,因此我认为只需要更改LANGUAGE。


编辑:

为了清楚起见,在/ etc / default / locale 设置LANGAUGE 并没有帮助。此外,〜/ .pam_environment不存在。

见下文。在/ etc / default / locale中将LANGUAGE设置为“ en”。我重启了机器。我验证了/ etc / default / locale的内容。但是,apt-get仍以俄语输出,因为LANGUAGE被其他地方覆盖(从语言环境生成上述输出)。

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

Answers:


5

取自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.

链接答案很la脚,可能就是您想要的。

在上面的链接中引用的文章解释,如果你想改变的是在命令行出现,那么你需要设置两种语言LANGLANGUAGE相应的在任/etc/default/locale~/.pam_environment

由于您已经尝试设置LANGUAGEin /etc/default/locale,因此我将尝试设置in,~/.pam_environment因为这是一个用户配置文件,其内容应覆盖全局环境中设置的所有内容。

编辑:

我继续尝试复制您通过设置描述的问题LANGUAGE/etc/default/locale"en:ru:en"注销,然后重新登录。它的工作。然后至少以root帐户(这是我对其进行测试的帐户)以俄语显示错误消息。更改值LANGUAGE"en"固定它。


不幸的是,正如我指出的那样,在/ etc / default / locale中设置变量是不够的。(请参阅原始文章和编辑内容以进行澄清。)显然,变量在某个地方被覆盖,我需要知道那个地方在哪里。
lnmaurer 2014年

我知道@lnmaurer。您是否尝试将其设置为~/.pam_environment?我看到了您对此的评论不存在。您可以尝试grep LANGUAGE /etc -r | less然后手动检查的每个实例LANGUAGE。此外,一定要检查~/.profile~/.xsessionrc
Alexej马古拉

2
我听了你的建议。/etc什么都没有打开,但是grepping我的主目录却打开了/.kde/env/setlocale.sh。看来这就是问题所在。
lnmaurer 2014年

1

听起来您已将LANGUAGE变量设置为ru:en或in /etc/default/locale,则尝试将其更改为en。

Alexej Magura撰写的答案也提到了~/.pam_environment。可能是因为您有Kubuntu,所以可能会(或同时)涉及其他文件。


〜/ .pam_environment对我而言不存在。关于可能要怪什么文件还有其他想法吗?
lnmaurer 2014年

@lnmaurer:可能~/.kde/share/config/kcmlocale-grouping与它有关。可以通过系统设置->语言环境->语言进行更改。
Gunnar Hjalmarsson 2014年

1
您说得对,这是KDE特有的。看来~/.kde/env/setlocale.sh是问题所在。
lnmaurer 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.