Linux "locale"解析

在终端输入locale命令,可以得到以下内容:(变量的值根据用户不同的设定而有所不同)

LANG=zh_CN.UTF-8
LANGUAGE=zh_CN
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=

这些变量代表什么意思呢?

1.LANG:默认的Locale

这个变量会填充所有未设置的LC_*变量的值.

1.LANGUAGE:后备的Locale

使用 gettext 翻译的软件会按照 LANGUAGE 选择使用的语言。用户通过这个变量指定一个locale 列表,如果前面的 locale 缺少翻译,会自动使用后面的 locale 显示界面。 例如下面的例子使用简体中文,没有翻译时使用英文:
  ~/.config/locale.conf:

LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN:en_GB:en"

3.LC_CTYPE:语言符号及其分类

此类别确定字节序列作为字符的解释(例如,单字节字符与多字节字符)、字符分类(例如,字母或数字)和字符类的行为。

4.LC_NUMERIC:数字

此类别确定用于非货币数值的格式规则,例如千位分隔符和基数字符(在大多数英语国家是句点,但在许多其他地区是逗号)

5.LC_TIME:时间显示格式

修改 strftime() 函数的执行方式以显示适于当地格式的当前时间; 例如,欧洲的绝大部分地区使用的是 24 小时的时钟, 而美国则是 12 小时的时钟.

6.LC_COLLATE:比较和排序习惯

7.LC_MONETARY:货币单位

8.LC_MESSAGES:提示信息(错误信息,状态,标签等等)

9.LC_PAPER:默认纸张大小

10.LC_NAME:姓名书写方式

11.LC_ADDRESS:地址书写方式

12.LC_TELEPHONE:电话号码书写方式

13.LC_MEASUREMENT:度量衡书写方式

14.LC_IDENTIFICATION:对locale自身包含信息的描述

15.LC_ALL:设置所有的变量

如果LC_ALL被设置,那么所有的变量都将设置成和LC_ALL一致

详情请见locale(7)

参考:

Linux下的Locale详解

Arch Wiki)

man-pages locale(7)