locale设置

2009-05-13 05:22:37来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折


4.6. locale 的设定# setenv LC_CTYPE zh_TW.utf-8
# setenv LANG zh_TW.utf-8
Note: 5.x 的简体使用者请用:
# setenv LC_CTYPE zh_CN.GBK
# setenv LANG zh_CN.GBK
4.x 的简体使用者请用:
# setenv LC_CTYPE zh_CN.encCN
# setenv LANG zh_CN.eucCN
locale 是一组 C 程式语言处理自然语言(文字)的程式介面, 也可以简单的说,locale 就是一组地区性语言的资讯。由国家语言和各地习俗影响所决定的惯例,或代表一个地理区域的定义所组成,这些惯例包含文字、日期、数字、货币格式和排序等等。这代表着 locale 可让程式的输出可以直接反应地方区域性的文化。C 语言的 locale 定义,分为下列各大类:


  • LC_ALL 指定所有的 Locale

  • LC_CTYPE 字元定义 (包含字元分类与转换规则)

  • LANG 语言显示

  • LC_MESSAGES 讯息显示

  • LC_TIME 时间格式

  • LC_NUMERIC 数字格式

  • LC_MONETARY 货币格式

  • LC_COLLATE 字母顺序与特殊字元比较

其中与一般使用者息息相关的,是字元定义 (LC_CTYPE) 与语言显示 (LANG)。LC_CTYPE 直接关系到某些字元或内码在目前的 locale 下是否可列印?要如何转换字码?对应到哪一个字?.... 等等。LANG 则关系到软体的讯息输出是不是符合地域性,例如 :我们需要的是中文。而一个真正完整支援 locale 系统, 是当使用者在 shell prompt 下,直接设好环境变数後,则马上就能切换到那个语言了。当 LC_MESSAGES、LC_TIME、LC_NUMERIC、 LC_MONETARY 等没有设定的时候,会直接取用 LANG 的环境设定值。
设定 Locale 的字元定义为台湾地区的 utf-8 繁体中文码定义, 有了正确的 locale 的定义後,使得任何地区的语文,只要在加入适当的 locale data 之後,C Library 就能正确地处理软体显示讯息, 而我们使用的中文当然也不例外,而目前常用的中文 locale data 就是 zh_TW.utf-8,代表的就是中文语系(zh)台湾地区(TW) 使用utf-8编码系统(utf-8)。
Note: locale 命名规则:语言_地区名.字元编码名称
当一个程式启动时,系统会预设给它一个初始 locale,称为 POSIX 或 C locale。在此 locale 下,程式的表现会与传统的 C 语言中一样, 使用英文做讯息输出,只能处理英文等 ASCII 码等等。如果该程式有支援 I18N,也就是说它有按照 I18N 的标准来写,则它在启动後就会马上呼叫系统函式来改变它的 locale, 如此它就摇身一变,变成可以处理该 locale 所代表的地区语文了。
zh_TW.utf-8 是目前台湾内广泛使用的 locale, zh 是华语(Chinese),1998 年 ISO639 里面以两个英文字母来代表语言编码, 这个缩写据笔者所知没有任何含义,而 TW 代表的就是台湾(Taiwan) 地区的缩写,最後的 utf-8 则是编码方式。
locale 设定档在编译後, 则是储存在 /usr/share/locale/ 目录下, 以 zh_TW.utf-8 locale 为例,该目录中就包含了 LC_COLLATE、LC_CTYPE、 LC_TIME。
而 LC_MESSAGES 则是储存在 /usr/local/share/locale/zh_TW/LC_MESSAGES/ 或是 /usr/X11R6/share/locale/zh_TW.utf-8/ 底下。由於 LC_MESSAGES 类别掌管的是程式讯息输出所用的语言,而且不同程式间的讯息都不会一样,因此它不能像其他类别一样,只提供单一一个资料档即可。相反的,在这里所采取的方式是由各应用程式自行提供它们的讯息资料档, 并统一放在各 locale 的 LC_MESSAGES 的目录下。例如 mutt 程式,其讯息的部分除了英文以外,可能还同时提供了繁体中文、简体中文、 日文、法文等翻译,因此,在以上这些语文所代表的 locale 中, 其底下的 LC_MESSAGES 目录中都会有一份属於 mutt 程式的讯息资料档。 换句话说,在 I18N 架构下,程式讯息部分是与程式分离的, 如此才能分别对各 locale 做 ``区域化'' (即翻译成各地区的语言)。 如此,当 mutt 在执行时,系统会根据目前它的 LC_MESSAGES locale 设定去找找看有没有它的讯息资料档存在,有的话就以该语言做讯息输出, 否则的话则以 C locale 的方式 (即英文) 来输出讯息。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:FreeBSD 中安装Oracle 9i

下一篇:关于FreeBSD近来的学习