Locales (简体中文)
From ArchWiki
i18n |
---|
Deutsch |
English |
Česky |
Українська |
简体中文 |
Contents |
介绍
在linux上Locales用来定义用户所使用的语言。因为locales还定义了用户使用的字符集,所以,当语言中含有非ASCIIA字符时,设定好正确的locale就显得非常重要了。
Locales是用以下的格式来定义的:
[language[_territory][.codeset][@modifier]]
在这篇howto中,我们将设置一个使用en_US.UTF-8作locale的系统,但是你也可以照着这篇文章很容易地设置另一种locale。
开启所需的locales
首先,你需要开启你希望自己系统支持的locales。开启或关闭它们要用到/etc/locale.gen文件。 它包含所有你可以开启的locale, 你只要删除那些行前面的注释符。
因为我们打算设置一个英文UTF-8的系统,所以我们要开启en_US.UTF-8。但是考虑到某些尚不支持UTF-8的程序的兼容性,建议同时选上所有其它以en_US开头的locale。 于是, 我们开启了这些:
en_US.UTF8 UTF-8 en_US ISO-8859-1
开启需要的locale之后,你必须以root身份运行locale-gen来更新它们:
# locale-gen Generating locales... en_US.UTF-8... done en_US.ISO-8859-1... done Generation complete.
注意:尽管在你的电脑上你很可能只使用一种语言, 但同时开启其它的locale有时会有帮助、甚至是必要的。比如你正运行着一个多用户的系统,而有的用户并不懂en_US,除非在你的系统上他们个人的locale至少是被支持的,否则他们是不会高兴的。
设定系统全局locale
要定义系统应使用哪一locale,你只要把它添加到/etc/rc.conf文件中。因为我们添加ISO-8859支持只是为了(向后的)兼容性,所以在这里我们写上en_US.utf-8:
LOCALE="en_US.utf8"
系统全局的locale将会在电脑重启以后更新。
设定每个用户的locale
就像我们刚才讨论过的那样,有些用户可能想定义一个不同于系统全局的locale。在这种情况下,你可以在~/.bashrc中自定义LC_ALL。 比如你可以使用en_US.iso8859,尽管使用它没有任何益处:
export LC_ALL=en_US.iso8859
当你的~/.bashrc被重新读入时,你的locales会被立即更新。可以是在登陆时,或者可以输入:
$ source ~/.bashrc
设定语言
系统与用户交流所用的语言也是由locales决定的, 被称为locale LC_LANG. 要设置你所选择的语言,你需要在~/.bashrc里输出LC_LANG变量:
export LC_LANG=en_EN.utf8
读取你的~/.bashrc之后, 程序应该会使用被定义的语言,至少当它们有合适的国际化方案时会是如此。
设定一周的起始日
在很多国家,每周的第一天是星期一。在/usr/share/i18n/locales/<your_locale>的LC_TIME区段,改写或添加如下几行:
week 7;19971130;5 first_weekday 2 first_workday 2
然后运行:
locale-gen
并重启X。
疑难解答
怎样才能获知可用locale的名称?
使用如下命令可以让你得到所有可用locale的正确名称:
$ locale -a
怎样才能知道我正在使用哪一locale呢?
当前正在使用的locale可以这样来查看,输入:
$ locale
我的终端不支持utf-8字符
很不幸某些终端不支持utf-8。这样的话,你得换另一种终端程序。 支持UTF-8的终端列表:
- gnome-terminal
- gnustep-terminal
- mlterm
- urxvt (rxvt-unicode)
- xfce-terminal
- xterm
注意:这一列表可能并不完整。
xterm在我这里不支持UTF-8字符
只有当你用uxterm或xterm -u8运行xterm时,它才能支持UTF-8。