什么是locale
locale 这个单词中文翻译成地区或者地域,其实这个单词包含的意义要宽泛很多。locale 是根据计算机用户所使用的语言,所在国家或者地区,以及当地的文化传统所定义的一个软件运行时的语言环境。
比如说:
在“简体中文”环境,运行date 命令,显示的是:
2015年01月07日 星期三 10:50:20 CST
而在英文环境下,运行date 命令,显示的是
Wed Jan 7 10:51:31 HKT 2015
locale 把按照所涉及到的使用习惯的各个方面分成12 大类,这12 个大类分别是:
- 语言符号及其分类(LC_CTYPE)
- 数字(LC_NUMBERIC)
- 比较习惯(LC_COLLATE)
- 时间显示格式(LC_TIME)
- 货币单位(LC_MONETARY)
- 信息主要是提示信息,错误信息,状态信息,标题,标签,按钮和菜单等(LC_MESSAGES)
- 姓名书写方式(LC_NAME)
- 地址书写方式(LC_ADDRESS)
- 电话号码书写方式(LC_TELEPHONE)
- 度量衡表达方式(LC_MEASUREMENT)
- 默认纸张尺寸大小(LC_PAPER)
- 对locale 自身包含信息的概述(LC_IDENTIFICATION)
而这些信息的配置通常放在/usr/share/i18n/locales 目录下。让我们打开以下zh_CN 和 en_US 。 实际上我们平时使用 date 函数的时候,就是在这里面进行格式选择的。
如何配置locale
通过locale 命令,可以看到LC_* 各个变量的设置,如下:
$ locale
LANG=en_HK.UTF-8
LANGUAGE=en_HK:en
LC_CTYPE="en_HK.UTF-8"
LC_NUMERIC="en_HK.UTF-8"
LC_TIME="en_HK.UTF-8"
LC_COLLATE="en_HK.UTF-8"
LC_MONETARY="en_HK.UTF-8"
LC_MESSAGES="en_HK.UTF-8"
LC_PAPER="en_HK.UTF-8"
LC_NAME="en_HK.UTF-8"
LC_ADDRESS="en_HK.UTF-8"
LC_TELEPHONE="en_HK.UTF-8"
LC_MEASUREMENT="en_HK.UTF-8"
LC_IDENTIFICATION="en_HK.UTF-8"
LC_ALL=
设置LC_TIME 变量:
$ LC_TIME=en_US.utf8 # 变量设置
$ export LC_TIME # 生效设置
$ date # 效果查看
LC_ALL、LANG和LC_* 的关系
设定locale 就是设定12 大类的locale分类属性,即12个LC_*。除了这个12个变量可以设定以外,为了简便起见,还有两个变量:LC_ALL 和LANG。他们之间有一个优先级的关系:LC_ALL > LC_* > LANG 可以这么说,LC_ALL 是最上级设定或者强制设定,而LANG 是默认设定值。
在设置了LC_ALL 之后,如果不 把LC_ALL 强制设置为空,那么LC_* 将无法被设置。但是LANG 的值不受影响。
LC_ALL=C 的含义
LC_ALL=C 是为了去除所有本地化的设置,让命令能正确执行。
locale 可以设置类型
$ locale -a
C
C.UTF-8
en_HK.utf8
POSIX
通过该命令查看后,可以知道所有可以使用的locale 方式。
参考:http://blog.csdn.net/Nicolase/article/details/42499521
原文链接:浅淡linux的locale,LC_ALL和LANG,转载请注明来源!