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_CN
的LC_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 其他
很多文章介绍说,locale
和LANG
的值还涉及到中文输入的问题.没找到这方面的例子.
因此,目前最多的还是界面和终端中不同语言环境的显式格式上的区别.
以上是关于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异常(代码片段