程序运行使用一套语言需要有字符集(数据)和字体(显示),Locale是根据计算机用户所使用的语言,所在国家或者地区,以及当地的文化传统所定义的一个软件运行时的语言环境。
一、locale详解
在 Linux 中通过 locale 来设置程序运行的不同语言环境,locale 由 ANSI C 提供支持。locale 的命名规则为:
<语言>_<地区>.<字符集编码>
如:zh_CN.UTF-8
其中zh代表中文,CN代表大陆地区,UTF-8表示字符集。
在locale环境中,有一组变量,代表国际化环境中的不同设置:
1)LC_COLLATE
定义该环境的排序和比较规则。
2)LC_CTYPE
用于字符分类和字符串处理,控制所有字符的处理方式,包括字符编码,字符是单字节还是多字节,如何打印等。是最重要的一个环境变量。
3)LC_MONETARY
货币格式。
4)LC_NUMERIC
非货币的数字显示格式。
5)LC_TIME
时间和日期格式。
6)LC_MESSAGES
提示信息的语言。另外还有一个LANGUAGE参数,它与LC_MESSAGES相似,但如果该参数一旦设置,则LC_MESSAGES参数就会失效。LANGUAGE参数可同时设置多种语言信息,如LANGUANE=”zh_CN.GB18030:zh_CN.GB2312:zh_CN”。
7)LANG
LC_*的默认值,是最低级别的设置,如果LC_*没有设置,则使用该值。类似于 LC_ALL。
8)LC_ALL
它是一个宏,如果该值设置了,则该值会覆盖所有LC_*的设置值。注意,LANG的值不受该宏影响。
一个例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[root@localhost ~]# locale LANG=zh_CN.UTF-8 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= |
二、locale常用操作
1)查看系统目前语言环境
1 |
[root@localhost ~]# locale |
2)查看系统可用语言环境
1 |
[root@localhost ~]# locale -a |
3)临时修改语言环境
1 |
[root@localhost ~]# export LANG="en_US.UTF-8" |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[root@localhost ~]# locale LANG=en_US.utf-8 LC_CTYPE="en_US.utf-8" LC_NUMERIC="en_US.utf-8" LC_TIME="en_US.utf-8" LC_COLLATE="en_US.utf-8" LC_MONETARY="en_US.utf-8" LC_MESSAGES="en_US.utf-8" LC_PAPER="en_US.utf-8" LC_NAME="en_US.utf-8" LC_ADDRESS="en_US.utf-8" LC_TELEPHONE="en_US.utf-8" LC_MEASUREMENT="en_US.utf-8" LC_IDENTIFICATION="en_US.utf-8" LC_ALL= |
切换回中文字符集
1 |
[root@localhost ~]# export LANG="zh_CN.UTF-8" |
4)永久修改系统级字符集
修改/etc/sysconfig/i18n
英文版系统:
1 2 |
LANG="en_US.UTF-8" SYSFONT="latarcyrheb-sun16" |
中文版系统:
1 2 |
LANG="zh_CN.UTF-8" SYSFONT="latarcyrheb-sun16" |
三、英文版系统支持中文字符集
1)安装所有与中文支持相关的包
1 |
$ yum -y groupinstall "chinese-support" |
2)修改字符编码配置文件
1 2 3 |
$ vi /etc/sysconfig/i18n LANG="zh_CN.UTF-8" SYSFONT="latarcyrheb-sun16" |