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

aef*_*aef 30 linux debian locale gnu environment-variables

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

这些变量的确切语义是什么,我可以在哪里阅读它们的正确用法?locale(1) 的联机帮助页只提到了 LC_* 系列的环境变量。此外,还有一个常见的 LC_ALL 变量,那里也没有描述。

Rém*_*émi 34

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

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

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

  • 2. GNU getText 文档的章节 [Specifying a Priority List of Languages](https://www.gnu.org/software/gettext/manual/html_node/The-LANGUAGE-variable.html#The-LANGUAGE-variable) 指出: `gettext 优先于 LANGUAGE 而不是 LC_ALL 和 LANG`。此外,[Locale Environment Variables](https://www.gnu.org/software/gettext/manual/html_node/Locale-Environment-Variables.html#Locale-Environment-Variables) 一章指出:`1. 语言 2. LC_ALL [...]` (6认同)
  • $LANGUAGE 不是 C 语言环境的一部分,而是特定于 GNU gettext。如果设置的话,它将优先于其他任何内容。我在自己的应用程序中使用它,以避免在使用基于 gettext 的库时使用混合语言。 (4认同)
  • @Rémi你能详细说明一下为什么不应该使用`LC_ALL`吗? (2认同)
  • 我不认为`LC_ALL`覆盖`LANGUAGE`:1.它们有不同的含义(顺序[例如:fr:de:en]与特征[例如:fr_FR]) (2认同)

Jaa*_*ing 12

看看手册页locale(7):它描述了这LANG是一个后备设置,而LC_ALL覆盖所有单独的LC_*设置。

  • man 7 locale 是命令 (5认同)

mik*_*ini 5

作为参考,语言环境系统是 GNU GetText,它在 gettext-doc 包 (Debian/Ubuntu) 中提供了完整的文档。

或者,有一个在线手册,其中包含LANGLANGUAGE环境变量的权威和详尽的文档 。