Difference between revisions of "Locale (简体中文)"

From ArchWiki
Jump to: navigation, search
(Add translatem.)
(update translation)
Line 1: Line 1:
 
[[Category:Internationalization (简体中文)]]
 
[[Category:Internationalization (简体中文)]]
[[Category:简体中文]]
 
 
[[cs:Locale]]
 
[[cs:Locale]]
 
[[de:Locale]]
 
[[de:Locale]]
Line 9: Line 8:
 
[[ru:Locale]]
 
[[ru:Locale]]
 
[[uk:Locale]]
 
[[uk:Locale]]
{{Translateme (简体中文)}}
+
{{TranslationStatus (简体中文)|Locale|2013-05-07|256087}}
 
+
 
在linux上Locales用来定义用户所使用的语言。因为locales还定义了用户使用的字符集,所以,当语言中含有非ASCIIA字符时,设定好正确的locale就显得非常重要了。
 
在linux上Locales用来定义用户所使用的语言。因为locales还定义了用户使用的字符集,所以,当语言中含有非ASCIIA字符时,设定好正确的locale就显得非常重要了。
  
Line 19: Line 17:
 
==开启所需的locales==
 
==开启所需的locales==
  
首先,你需要开启你希望自己系统支持的locale。列出所有启用的locale,使用:
+
设置 locale 前,需要先准备需要的 locale。要列出所有启用的locale,使用:
 
  $ locale -a
 
  $ locale -a
  
开启或关闭它们要用到{{ic|/etc/locale.gen}}文件。 它包含所有你可以开启的locale, 你只要删除那些行前面的注释符。
+
要开启 locale,在文件{{ic|/etc/locale.gen}}中取消相应locale前的注释,此文件包含新系统支持的所有locale。加上注释就会禁用locale。开启需要的locale之后,你必须以root身份运行locale-gen来更新它们:
 +
# locale-gen
  
 
想要显示正在使用的locale,运行:
 
想要显示正在使用的locale,运行:
 
  $ locale
 
  $ locale
  
开启需要的locale之后,你必须以root身份运行locale-gen来更新它们:
+
{{注意|尽管在你的电脑上你很可能只使用一种语言,但同时开启其它的locale有时会有帮助、甚至是必要的。比如你正运行着一个多用户的系统,而有的用户并不懂en_US,那么你的系统需要支持他们需要的 locale.}}
# locale-gen
+
 
+
{{注意|尽管在你的电脑上你很可能只使用一种语言,但同时开启其它的locale有时会有帮助、甚至是必要的。比如你正运行着一个多用户的系统,而有的用户并不懂en_US,除非在你的系统上他们个人的locale至少是被支持的,否则他们是不会高兴的。}}
+
  
==英语 UTF-8 的例子==
+
== 英语示例 ==
 
想要设置一个英文UTF-8的系统,需要开启en_US.UTF-8。但是考虑到某些尚不支持UTF-8的程序的兼容性,建议同时选上所有其它以en_US开头的locale。  
 
想要设置一个英文UTF-8的系统,需要开启en_US.UTF-8。但是考虑到某些尚不支持UTF-8的程序的兼容性,建议同时选上所有其它以en_US开头的locale。  
  
Line 43: Line 39:
  
 
==设定系统全局locale==
 
==设定系统全局locale==
 +
To define the system-wide locale used on the system, set {{ic|LANG}} in {{ic|/etc/locale.conf}}.
 +
 
要定义系统应使用哪一locale,你只要把它添加到{{ic|/etc/rc.conf}}文件中。
 
要定义系统应使用哪一locale,你只要把它添加到{{ic|/etc/rc.conf}}文件中。
 
  LOCALE="en_US.UTF-8"
 
  LOCALE="en_US.UTF-8"

Revision as of 01:15, 8 May 2013

翻译状态: 本文是英文页面 Locale翻译,最后翻译时间:2013-05-07,点击这里可以查看翻译后英文页面的改动。

在linux上Locales用来定义用户所使用的语言。因为locales还定义了用户使用的字符集,所以,当语言中含有非ASCIIA字符时,设定好正确的locale就显得非常重要了。

Locales是用以下的格式来定义的:

<lang>_<territory>.<codeset>[@<modifiers>]

开启所需的locales

设置 locale 前,需要先准备需要的 locale。要列出所有启用的locale,使用:

$ locale -a

要开启 locale,在文件/etc/locale.gen中取消相应locale前的注释,此文件包含新系统支持的所有locale。加上注释就会禁用locale。开启需要的locale之后,你必须以root身份运行locale-gen来更新它们:

# locale-gen

想要显示正在使用的locale,运行:

$ locale
注意: 尽管在你的电脑上你很可能只使用一种语言,但同时开启其它的locale有时会有帮助、甚至是必要的。比如你正运行着一个多用户的系统,而有的用户并不懂en_US,那么你的系统需要支持他们需要的 locale.

英语示例

想要设置一个英文UTF-8的系统,需要开启en_US.UTF-8。但是考虑到某些尚不支持UTF-8的程序的兼容性,建议同时选上所有其它以en_US开头的locale。

首先,在/etc/locale.gen中启用以下locale:

en_US.UTF8    UTF-8
en_US  ISO-8859-1

然后,以root身份运行locale-gen来更新它们:

# locale-gen

设定系统全局locale

To define the system-wide locale used on the system, set LANG in /etc/locale.conf.

要定义系统应使用哪一locale,你只要把它添加到/etc/rc.conf文件中。

LOCALE="en_US.UTF-8"

系统全局的locale将会在电脑重启以后更新。

设定每个用户的locale

就像我们刚才讨论过的那样,有些用户可能想定义一个不同于系统全局的locale。在这种情况下,你可以在~/.bashrc中自定义LANG。 比如你可以使用en_AU.UTF-8

export LANG=en_AU.UTF-8

当你的~/.bashrc被重新读入时,你的locales会被立即更新。可以重新登陆,或者可以输入:

$ source ~/.bashrc

设置排序规则

排序规则有一些不同。排序是一个傻傻的野兽,然而不同的locale处理方式不同。为了避免出现一些潜在的问题,Arch 曾经在/etc/profile 中设置LC_COLLATE="C"。然而,现在这个方法不推荐使用。想要启用此方式,只需要添加下面这行到~/.bashrc

export LC_COLLATE="C"

现在 ls 命令会把 dotfiles 排在最前面,然后是大写和小写的文件名。注意如果没有 LC_COLLATE 设定的话,对 locale 敏感的程序会使用 LC_ALL 或者 LOCALE 定义的方式排序,但是 LC_COLLATE 设置会被 LC_ALL 覆盖。为了解决这个问题,添加下面这两行:

export LC_ALL=
export LC_COLLATE="C"

设定一周的起始日

在很多国家,每周的第一天是星期一。在/usr/share/i18n/locales/<your_locale>LC_TIME区段,改写或添加如下几行:

week            7;19971130;5
first_weekday   2
first_workday   2

然后运行:

locale-gen
提示: 如果你遇到一些问题想在论坛上,或者邮件列表中提问,请在张贴之前包含使用了export LC_MESSAGES=C的异常输出。这会把默认的输出信息改为英语,这样就可以让更多的人理解问题所在。在非英语的论坛张贴就没关系了。

疑难解答

我的终端不支持UTF-8字符

很不幸某些终端不支持UTF-8。这样的话,你得换另一种终端程序。以下是支持UTF-8的终端列表:

  • gnome-terminal
  • gnustep-terminal
  • konsole
  • mlterm
  • urxvt (rxvt-unicode)
  • xfce-terminal
  • xterm

xterm在我这里不支持UTF-8字符

只有当你用uxterm或xterm -u8运行xterm时,它才能支持UTF-8。

Gnome-terminal 不支持 UTF-8

添加下面一行到 /etc/environment 文件:

LANG="en_US.UTF-8"

重启系统,gnome-terminal 就会正常工作了。

更多资源