1.5.2. “$LANG”变量

$LANG” 变量的完整的语言环境值由3部分组成:“xx_YY.ZZZZ”。

表 1.17. 语言环境值的 3 个部分

语言环境值说明
xxISO 639 语言代码(小写)例如“en”
YYISO 3166 国家代码(大写)例如“US”
ZZZZ编码,总是设置为“UTF-8”

对于语言代码和国家代码,参加“info gettext”中的相关描述。

对于现代 Debian 系统中的编码,你应该总是设定为UTF-8,除非你有足够的理由和背景知识并且特别想使用过时的编码。

对于语言环境配置的细节,参见 第 8.4 节 “语言环境”

[注意]注意

LANG=en_US” 既不是 “LANG=C” 也不是 “LANG=en_US.UTF-8”。它是 “LANG=en_US.ISO-8859-1”(参见第 8.4.1 节 “编码的基础知识”)。

表 1.18. 语言环境推荐列表

语言环境推荐语言(地区)
en_US.UTF-8英语(美国)
en_GB.UTF-8英语(大不列颠)
fr_FR.UTF-8法语(法国)
de_DE.UTF-8德语(德国)
it_IT.UTF-8意大利语(意大利)
es_ES.UTF-8西班牙语(西班牙)
ca_ES.UTF-8加泰隆语(西班牙)
sv_SE.UTF-8瑞典语(瑞典)
pt_BR.UTF-8葡萄牙语(巴西)
ru_RU.UTF-8俄语(俄国)
zh_CN.UTF-8汉语(中华人民共和国)
zh_TW.UTF-8汉语(中国台湾)
ja_JP.UTF-8日语(日本)
ko_KR.UTF-8韩语(韩国)
vi_VN.UTF-8越南语(越南)

使用 shell 命令行按顺序执行下列典型的命令。

  1. $ date
  2. Sun Jun 3 10:27:39 CST 2007
  3. $ LANG=fr_FR.UTF-8 date
  4. dimanche 3 juin 2007, 10:27:33 (UTC+0800)

这里,date(1)程序执行时使用了与环境变量“$LANG”不同的值。

  • 第一个命令,“$LANG” 设置为系统的默认语言环境值 “en_US.UTF-8”。

  • 第二个命令,“$LANG”设置为法语的 UTF-8 语言环境值“fr_FR.UTF-8”。

大多数的命令在执行时并没有预先定义环境变量。对于上面的例子,你也可以选择如下的方式。

  1. $ LANG=fr_FR.UTF-8
  2. $ date
  3. dimanche 3 juin 2007, 10:27:33 (UTC+0900)

正如你所看到的,命令的输出受环境变量的影响,上面产生的是法语输出。如果你想这个环境变量能在子进程中被继承的话(例如执行 shell 脚本时),你需要使用下面的命令导出(export)它。

  1. $ export LANG
[注意]注意

在使用常规的控制台终端的时候,环境变量 “$LANG“ 通常会被桌面环境变量通过 exported 方式重置。如果要测试 export 带来的影响,这个可能不是一个很好的例子。

[提示]提示

提交一个BUG报告的时候,如果使用的是非英语的环境,在 “LANG=en_US.UTF-8“ 环境下对命令进行运行和检查会更好一些。

可以通过命令 locale(5) 和locale(7) 来查看 “$LANG“ 及相关的环境变量。

[注意]注意

建议最好用变量 “$LANG“ 来配置系统环境变量,只有在逼不得已的情况下才用 $LC_*“ 开头的变量。