linux中的locale,LANG

Posted perfy576

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux中的locale,LANG相关的知识,希望对你有一定的参考价值。

Locale是根据计算机用户所使用的语言,所在国家或者地区,以及当地的文化传统所定义的一个软件运行时的语言环境.?

技术分享图片

可以发现locale命令中,可以显示多个LC_*LANG.

1 LANG

LANG变量是language的简称,在一个系统变量,它决定系统的默认语言的,即系统的菜单、程序的工具栏语言、输入法默认语言等.

LANG在登录系统后就被读取并生效,unbuntu中,是从下面这个文件中读取的.技术分享图片

看一下格式:zh_CN.UTF-8,其中zh_CN这个组合,在很多地方都可以看到,而完整的表达是:

语言[_地域[.字符集]][@修正值] 

在ubuntu中,这些组合在/usr/share/i18n/locales文件中:

技术分享图片

其中i18n来源是英文单词 internationalization的首末字符i和n,18为中间的字符数,是“国际化”的简称.指让产品(出版物,软件,硬件等)无需做大的改变就能够适应不同的语言和地区的需要.对程序来说,在不修改内部代码的情况下,能根据不同语言及地区显示相应的界面. 在全球化的时代,国际化尤为重要,因为产品的潜在用户可能来自世界的各个角落.通常与i18n相关的还有L10n(“本地化”的简称).

这些文件的内容主要对12个小项目的格式的定义:

LC_CTYPE                    #用户所使用的语言符号及其分类
LC_NUMERIC                #数字
LC_TIME                      #时间显示格式
LC_COLLATE                #比较和排序习惯
LC_MONETARY             #LC_MONETARY
LC_MESSAGES             #信息主要是提示信息,错误信息, 状态信息, 标题, 标签, 按钮和菜单等
LC_PAPER                    #默认纸张尺寸大小
LC_NAME                     #姓名书写方式
LC_ADDRESS               #地址书写方式
LC_TELEPHONE             #电话号码书写方式
LC_MEASUREMENT        #度量衡表达方式
LC_IDENTIFICATION      #对自身包含信息的概述

例如:en_HK文件的LC_IDENTIFICATION部分:

技术分享图片

zh_CNLC_TIME部分为:

技术分享图片

对应的中文就是,星期一...等.这就是在中文的linux下date等命令,输出特定的信息的格式,例如:

技术分享图片

LANG设定为不同的值,那么输出的形式也不同.

而不同文件的不同的小项目可能都是不同的.因而,完成了本地化的过程.

2 locale

LANG变量,只能全局的改变上述的12个条目,也就是说:

LC_CTYPE                    #用户所使用的语言符号及其分类
LC_NUMERIC                #数字
LC_TIME                      #时间显示格式
LC_COLLATE                #比较和排序习惯
LC_MONETARY             #LC_MONETARY
LC_MESSAGES             #信息主要是提示信息,错误信息, 状态信息, 标题, 标签, 按钮和菜单等
LC_PAPER                    #默认纸张尺寸大小
LC_NAME                     #姓名书写方式
LC_ADDRESS               #地址书写方式
LC_TELEPHONE             #电话号码书写方式
LC_MEASUREMENT        #度量衡表达方式
LC_IDENTIFICATION      #对自身包含信息的概述

这12个条目的值,默认都等于LANG的值.

在linux环境变量中,这12个值都可以单独的设置:

LC_*="*"
export LC_*

即可单独的设置某一项.

其中又有LC_ALL可以统一的设置上述的12个小项,三者的优先级为:

LC_ALL>LC_*>LANG

3 LC_ALL=C

LC_ALL=C的含义是:"C"是系统默认的locale,"POSIX"是"C"的别名.所以当我们新安装完一个系统时,默认的locale就是C或POSIX.

4 改文件名为英文

安装linux系统的时候,如果语言选择的是中文,那么安装结束以后,用户目录下的桌面,下载等文件夹都是中文,不利于终端下操作,因此会将这些文件夹改为英文:

export LANG=en_US  
xdg-user-dirs-gtk-update  
export LANG=zh_CN  

5 其他

很多文章介绍说,localeLANG的值还涉及到中文输入的问题.没找到这方面的例子.

因此,目前最多的还是界面和终端中不同语言环境的显式格式上的区别.

以上是关于linux中的locale,LANG的主要内容,如果未能解决你的问题,请参考以下文章

java.lang.IllegalStateException:片段未附加到活动

Linux字符集和系统语言设置-LANG,locale,LC_ALL,POSIX等命令及参数详解

在 Android 片段中获取 Java.Lang.NullPointerException

java.lang.NullPointerException: Attempt to invoke virtual method ‘int android.database.sqlite异常(代码片段

java.lang.IllegalStateException:键 f0 的片段不再存在:索引 1

Linux中文显示