决定搞明白它!
之前只知道LC_*这堆环境变量的作用. 没有理会什么是locale.
什么是locale呢?
先看一下实体文件吧:
jessinio@nio-laptop ~ $ ls /usr/share/locale/zh_CN/LC_MESSAGES/
FvwmScript.mo cracklib.mo gtk20.mo sed.mo
FvwmTaskBar.mo findutils.mo libc.mo shadow.mo
GConf2.mo flex.mo libwnck.mo shared-mime-info.mo
Linux-PAM.mo fvwm.mo make.mo subversion.mo
atk10.mo gettext-runtime.mo nano.mo tar.mo
compiz.mo gettext-tools.mo popt.mo texinfo.mo
coreutils.mo glib20.mo scim-pinyin.mo wget.mo
cpio.mo gtk20-properties.mo scim.mo
一堆*.mo文件! *.mo和*.po文件就见得多了,i18n的产品!
先看一个*.po例子文件吧:
msgid "size not available"
msgstr "不被允许的大小"
msgid "Text%(sz)s"
msgstr "文本大小为 %(sz)s"
上面就是*.po文件的东西, 说白了:
*.po就是翻译对照表!!!!!
而*.mo就是*.po的二进制格式!! 从*.po文件生成*.mo可以使用msgfmt命令!
引用网上的一段话:
locale,说白了就是储存在glibc中的一些跟国家,地区有关的数据信息。比如说语言,货币,时间,输入法等等。在安装glibc的时候,它就会自动被安装在系统中。当程序需要的时候,它就会通过几个环境变量的设置,而选取不同的数据进行使用。这些数据被安装在 /usr/share/locale (X使用的被装在/usr/X11R6/lib/locale/)
在维基百科中可以看到如下信息:
These settings usually include the following display (output) format settings:
- Display language setting
- Number formats setting
- Date/Time formats setting
- Timezone setting
- Daylight saving time (DST) setting
- Currency formats setting
程序是怎么使用不用的locale的呢? 答案在于环境变量!
就是那一堆LC_*的变量
变量名 | 说明 |
---|---|
LANG | 一次性定义全部locale设置,但是允许通过下面的LC_*设置进一步作单项定制。 |
LC_COLLATE | 定义字符串的字母排序方式。例如这会影响目录列表的分类显示。 |
LC_CTYPE | 定义系统的字符处理性能。这决定哪些字符能被视为字母、数字,等等。这个变量如果生效还决定所使用的字符集。 |
LC_MESSAGES | 使用基于消息机制的本地化方式的应用程序的本地化信息(绝大多数GNU程序皆属此类,请看下面的章节以获知如何让支持以及不支持此机制的程序本地化)。 |
LC_MONETARY | 定义货币单位和货币型数值的格式。 |
LC_NUMERIC | 定义非货币型数值的格式。影响到千位分隔符和小数分隔符等。 |
LC_TIME | 定义日期和时间的格式。 |
LC_PAPER | 定义默认的纸张尺寸。 |
LC_ALL | 一个用于覆盖所有其它设置的特殊变量。 |
上面N多个变量都是定制本地信息的,其实常用的只有两个:
1. LC_CTYPE
这会影响到(X)程序对字符的处理, 比如scim, 如下是scim对此变量的使用说明:Set this variable if you do not want to change your UI language, scim可以使用三个环境变量
* LANG
* LC_ALL
* LC_CTPYE
前面两个都要影响到UI和字体, 第三个就是最好的选择了
2. LC_MESSAGES 这会影响到X程序的界面与它使用的字体
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.