Locales (简体中文)

From ArchWiki

Jump to: navigation, search
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。

链接

GentooWiki: Localdef

Personal tools