基于Debian的系统中的LANG和LANGUAGE环境变量


22

似乎某些程序使用LANG和LANGUAGE环境变量来确定其用户界面语言。

这些变量的确切语义是什么?在哪里可以读到它们的正确用法?locale(1)的手册页仅提及LC_ *系列环境变量。此外,通常也有一个LC_ALL变量,这里也没有描述。

Answers:


23

LANG包含不是由LC_*变量直接设置的所有类别的设置。

LC_ALL用于覆盖每个LC_*and LANGLANGUAGE。它不应该在普通用户环境中设置,但是在编写依赖于国际化命令精确输出的脚本时很有用。

LANGUAGE用于将消息语言(如LC_MESSAGES)设置为多值,例如,将其设置为fr:de:en使用法语消息(如果存在);如果没有,它将使用德语消息,如果德语和法语消息均不可用,它将回落为英语。


在哪里可以找到有关LANGUAGE的文档?它与LC_MESSAGES是否互斥?
2012年

1
您可以详细说明@Rémi为什么LC_ALL不使用吗?
爱德华·洛佩兹

1
没什么好说的。如果设置LANG,则比设置LC_ALL更具灵活性:可以将LANG设置为某些内容,将LC_COLLATE设置为其他内容。如果设置LC_ALL,则其他所有配置都将被隐藏。
雷米

2
我不认为LC_ALL覆盖LANGUAGE:1.它们具有不同的含义(顺序[例如:fr:de:en]与特征[例如:fr_FR])
Murmel,

6
2. GNU getText文档的“ 指定语言的优先列表”一章指出:gettext gives preference to LANGUAGE over LC_ALL and LANG。此外,“ 语言环境环境变量 ”一章指出:1. LANGUAGE 2. LC_ALL [...]
Murmel,

10

看一下联机帮助页locale(7):它描述了LANG一个后备设置,同时LC_ALL覆盖了所有单独的LC_*设置。


3
man 7语言环境是命令
Smile4ever

2

作为参考,语言环境系统是GNU GetText,其完整文档可在gettext-doc软件包(Debian / Ubuntu)中找到。

另外,还有在线手册,其中包含有关LANGLANGUAGE环境变量的权威且详尽的文档 。

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.