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=
除了 LANGUAGE 之外,其他设置都正确。我查看了许多有关如何配置区域设置/语言的说明,但似乎没有任何东西可以改变 LANGUAGE(尽管他们已经更改了其他环境变量,例如 LANG)。因此,我对如何更改区域设置的概述不感兴趣。我需要具体了解如何更改 LANGUAGE(除非我完全误解了情况)。值得一提的是,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 被其他地方覆盖(从 locale 生成上述输出)。
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
答案1
取自帮助中心
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.
虽然链接答案很蹩脚,这可能就是你想要的。
上面链接中引用的帖子解释说,如果您想更改命令行上显示的语言,那么您需要在或中相应地设置LANG
和。LANGUAGE
/etc/default/locale
~/.pam_environment
由于您已经尝试过设置LANGUAGE
,/etc/default/locale
所以我会尝试设置它,~/.pam_environment
因为这是一个用户配置文件,其内容应该覆盖全局环境中设置的任何内容。
编辑:
我继续尝试复制您描述的问题,方法是将设置LANGUAGE
为/etc/default/locale
注销"en:ru:en"
然后重新登录。成功了。错误消息随后以俄语显示,至少对于 root 帐户(这是我测试的帐户)而言是如此。将值更改为LANGUAGE
已"en"
修复此问题。
答案2
如果其他人在 2020 年代寻找答案,LANGUAGE 环境变量现在设置为~/.config/plasma-localerc
答案3
听起来您已将LANGUAGE
变量设置为 ru:en 或其他内容/etc/default/locale
,因此请尝试将其更改为 en。
Alexej Magura 写的答案也提到了~/.pam_environment
。可能由于您拥有 Kubuntu,因此可能还涉及其他文件(或也涉及)。