![为什么覆盖 LANG 环境变量不会改变我的语言?](https://linux22.com/image/967975/%E4%B8%BA%E4%BB%80%E4%B9%88%E8%A6%86%E7%9B%96%20LANG%20%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E4%B8%8D%E4%BC%9A%E6%94%B9%E5%8F%98%E6%88%91%E7%9A%84%E8%AF%AD%E8%A8%80%EF%BC%9F.png)
我正在尝试以另一种语言运行应用程序作为我的当前环境。首先,我想更改语言ls
。
这是我到处读到的内容(请参阅下文了解相关问题):设置LANG
为受支持的语言环境之一,例如:
LANG=nl_NL.UTF-8 ls /nonexistent
使其显示荷兰语(NL)输出。
但是,我仍然得到英文输出:
$ LANG=nl_NL.UTF-8 ls -al /nonexistent
ls: cannot access /nonexistent: No such file or directory
我当前的环境:
$ locale
LANG=en_GB.UTF-8
LANGUAGE=en_GB:en
LC_CTYPE="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_PAPER="en_GB.UTF-8"
LC_NAME="en_GB.UTF-8"
LC_ADDRESS="en_GB.UTF-8"
LC_TELEPHONE="en_GB.UTF-8"
LC_MEASUREMENT="en_GB.UTF-8"
LC_IDENTIFICATION="en_GB.UTF-8"
LC_ALL=
为了确保万无一失,我已经检查过:
支持以下语言环境:
$ grep nl_NL /usr/share/i18n/SUPPORTED nl_NL.UTF-8 UTF-8 nl_NL ISO-8859-1 nl_NL@euro ISO-8859-15
区域设置生成如下:
sudo locale-gen nl_NL.UTF-8
并
sudo dpkg-reconfigure locales
显示它已生成。安装荷兰语语言包(已安装):
sudo apt-get install language-pack-nl
我还尝试过什么?
- 使用
export
来设置两者LANG
,而LANGUAGE
不是在命令前面添加。 - 设置也
LC_ALL
。
讽刺的是,一些(只有一些!) GUI 应用程序实际上是荷兰语的,但我根本没有配置它!
就此而言,我使用的是 Kubuntu 12.04(.2)。
类似问题(无济于事):
- 可以暂时更改用户界面语言吗?
- 如何在单个命令上覆盖系统区域设置?
- 暂时更改终端消息/警告/错误的语言(已证明可行,但对我而言无效)
- 如何向 ubuntu 服务器添加区域设置?
我的系统出了什么问题?在哪里可以进一步调试?
答案1
因为优先于 LANG 的 LANGUAGE 已经设置且没有改变。
$ LANGUAGE=nl ls /nonexistent
ls: kan geen toegang krijgen tot /nonexistent: Bestand of map bestaat niet
更多信息请参阅GNU gettext 文档:
在消息处理方面,GNU gettext 优先使用 LANGUAGE 而不是 LC_ALL 和 LANG,但是您仍然需要将 LANG(或 LC_ALL)设置为主要语言;这是系统库的其他部分所需要的。