Gentoo Logo

Gentoo Linux本地化指南

内容:

1.  时区

你需要选择时区让系统知道你的地理位置,以保持正确的时间。在/usr/share/zoneinfo中查找你的时区。然后在/etc/conf.d/clock中设置时区。请忽略/usr/share/zoneinfo/Etc/GMT*时区,因为它们的名字并不表示所指的地区。比如,GMT-8实际上是GMT+8。

代码 1.1: 设置时区信息

# ls /usr/share/zoneinfo
(假设你要使用布鲁塞尔)
(首先复制正确的地区到localtime)
# cp /usr/share/zoneinfo/Europe/Brussels /etc/localtime
(现在指定时区)
# nano -w /etc/conf.d/clock
TIMEZONE="Europe/Brussels"

# date
Wed Mar  8 00:46:05 CET 2006

注意: 确保代表时区的英文缩写(本案例中为"CET")正是你的地区。

注意: 你可以做一个用户级的设置,在shell的rc文件(如bash的.bash_profile)中将TZ变量的值设为/usr/share/zoneinfo下的任何东西。本案例中TZ="Europe/Berlin"

2.  硬件时钟

Gentoo Linux安装过程中,大多数情况下硬件时钟都是被设成UTC(或GMT,格林威治标准时间),而时区则定为实际的本地时间。如果出于某种原因,你需要将硬件时钟设为非UTC,那么你就要编辑/etc/conf.d/clock,将CLOCK的值由UTC改为local

代码 2.1: 本地时钟vs.格林威治时钟

(推荐:)
CLOCK="UTC"
(或者:)
CLOCK="local"

3.  Locale系统

locale是什么?

一份Locale是一组信息的集合,大多数程序利用它来确定特定的国家和语言设置。这些locale以及它们包含的数据是系统库的一部分,可以在大多数系统中的/usr/share/locale目录下找到。locale的名称通常命名为ab_CD的形式,其中ab是两个(或三个)字母的语言代号(在ISO-639中指定),CD是两个字母的国家代号(在ISO-3166中指定)。一些变量常常附加在locale名称的后面,例如en_GB.UTF-8de_DE@euro。更多关于locale及相关的文章请考察维基百科

locale环境变量

Locale的设置保存在环境变量中。典型情况下设置在/etc/env.d/02locale(系统全局设置)和~/.bashrc(特定用户设置)文件中。这些变量分别决定locale各方面的设置,下面的表格给出了具体说明。所有变量都会取一个前述ab_CD格式的locale名称作为值。

变量名 说明
LANG 一次性定义全部locale设置,但是允许通过下面的LC_*设置进一步作单项定制。
LC_COLLATE 定义字符串的字母排序方式。例如这会影响目录列表的分类显示。
LC_CTYPE 定义系统的字符处理性能。这决定哪些字符能被视为字母、数字,等等。这个变量如果生效还决定所使用的字符集。
LC_MESSAGES 使用基于消息机制的本地化方式的应用程序的本地化信息(绝大多数GNU程序皆属此类,请看下面的章节以获知如何让支持以及不支持此机制的程序本地化)。
LC_MONETARY 定义货币单位和货币型数值的格式。
LC_NUMERIC 定义非货币型数值的格式。影响到千位分隔符和小数分隔符等。
LC_TIME 定义日期和时间的格式。
LC_PAPER 定义默认的纸张尺寸。
LC_ALL 一个用于覆写所有其它设置的特殊变量。

注意: 有些程序在编写时假定按照传统的英语字母表顺序排序,而有些locale,最明显的是爱沙尼亚语的,使用一种不同的排序方式。因此在作系统全局设置时,建议明确地将LC_COLLATE设定为C。

警告: LC_ALL设置之后不可被覆写,因此强烈反对使用。除非作测试请不要使用它,并且决不要把它设置在启动文件中。

最典型的情况是用户只在全局基础上设置LANG变量。这个例子为unicode的德语locale:

代码 3.1: 在/etc/env.d/02locale中设置默认的系统locale

LANG="de_DE.UTF-8"
LC_COLLATE="C"

注意: 如果要使用欧元货币符号(€),则使用de_DE@euro作为LANG的值。

也有可能,特别在一个较传统的UNIX环境中很普遍,保留全局设置不变,比如locale为“C”。用户仍可以在他们自己的shell RC文件中指定首选的locale:

代码 3.2: 在~/.bashrc中设置用户locale

export LANG="de_DE.UTF-8"
export LC_COLLATE="C"

另一种系统配置方式是保留默认的C locale,同时要能够表现UTF-8字符。这种选择可以通过在/etc/env.d/02locale中使用下述设置来实现:

代码 3.3: 使用传统的C locale同时指定UTF-8

LC_CTYPE=de_DE.UTF-8

使用以上所述的做法,用户将能够正确地看到本地化的文件名,而不是被强制为你首选的语言。

为了让支持基于消息机制的本地化的程序运行,你可能需要设定nls(本地语言支持)USE标记来编译程序。

设置好正确的locale后,一定要更新环境变量使系统知道所做的更改:

代码 3.4: 更新环境

(更新系统全局默认的locale:)
# env-update && source /etc/profile

(更新特定用户的locale:)
$ source ~/.bashrc

更新环境后,你需要按下Ctrl-Alt-Backspace杀死X服务器,登出,然后以用户身份登入。

现在,检验一下所做的更改是否已经生效了:

代码 3.5: 检验环境更改

$ locale

另外还有一个本地化变量叫做LINGUAS。它会影响到基于gettext的程序将会安装的本地化文件。它还能决定某些特殊软件包的本地化,比如kde-base/kde-i18napp-office/openoffice。这个变量的值为一组以空格隔开的语言代码,建议将其设置在/etc/make.conf中:

代码 3.6: 在make.conf中设置LINGUAS

# nano -w /etc/make.conf
(加入LINGUAS变量中。例如,德语、芬兰语和英语:)
LINGUAS="de fi en"

生成指定的Locale

如果你用一个默认不可用的locale,则应当使用localedef来生成你的locale。比如:

代码 3.7: 使用localedef生成一个locale

# localedef -c -i en_US -f ISO-8859-15 en_US.ISO-8859-15

生成locale之后,你可以export一个合适的LANG变量。

代码 3.8: Export LANG变量

# export LANG="en_US.ISO-8859-15"

做了改动之后一定要更新环境:

代码 3.9: 更新环境

# env-update && source /etc/profile

更新环境后,你需要按下Ctrl-Alt-Backspace杀死X服务器,登出,然后以用户身份登入。

为glibc生成locale

可能你在系统中只要用到一个或者两个locale。你可以在/etc/locale.gen中指定所需的的locale。

代码 3.10: 添加locale到/etc/locale.gen

en_GB ISO-8859-1
en_GB.UTF-8 UTF-8
de_DE ISO-8859-1
de_DE@euro

下一步是执行locale-gen。它会生成/etc/locale.gen文件中指定的所有locale。

注意: locale-genglibc-2.3.6-r4及更新版本中可用。如果你的glibc版本较旧,那么现在就应该更新了。

你可以通过执行locale -a来检验所选的locale是否可用。

4.  控制台下的键盘布局

控制台下使用的键盘布局通过/etc/conf.d/keymaps中的KEYMAP变量来设定。其有效值可以在/usr/share/keymaps/{arch}/下找到。i386下进一步细分了布局(如qwerty/azerty/等)。有些语言有多个选择项,你可能要试验后再决定哪个最适合自己的需求。

代码 4.1: 设置控制台的键盘映射

KEYMAP="de"
KEYMAP="de-latin1"
KEYMAP="de-latin1-nodeadkeys"

5.  X服务器下的键盘布局

X服务器下使用的键盘布局通过/etc/X11/xorg.conf中的XkbLayout选项来指定。

代码 5.1: 设置X的键盘映射

 Section "InputDevice"
     Identifier  "Keyboard1"
     ...
     Option "XkbLayout"    "de"
     #Option "XkbModel"     "pc105"    ## 这适用于国际键盘。
     # Option "XkbVariant"  "nodeadkeys" ## 这将被用于xterm的输入
     ...

如果你有一个国际键盘布局,则必须将XkbModel选项设置为pc102pc105,这样才可以映射你键盘上附加的特殊按键。

Deadkey允许你按下某些键不马上显示,而是与另一个字母组合得到一个单一的字符如é、è、á、à……等等。将XkbVariant设置为nodeadkeys允许在X终端中输入这些特殊字符。

如果想在多个键盘布局之间切换(例如英语和俄语),你要做的全部事情就是在xorg.conf中添加几行内容,指定想要的布局及快捷键命令。

代码 5.2: 在两个键盘布局之间切换

 Section "InputDevice"
     Identifier  "Keyboard1"
     ...
     Option "XkbLayout"    "us,ru"
     Option "XkbOptions"   "grp:alt_shift_toggle,grp_led:scroll"

这里,XkbOptions允许你通过简单地按下Alt-Shift来在各个键盘布局之间转换。得益于grp_led:scroll选项,也可以通过控制Scroll Lock灯亮或灯灭来转换。这是个得心应手的视觉指示器,指出此时你正在使用的键盘布局。

6.  KDE

对于KDE你必须安装kde-base/kde-i18n软件包。Kde-i18n与前面描述的LINGUAS变量有关。

7.  控制台下的欧元符号

为了让控制台显示欧元符号,你需要将/etc/conf.d/consolefont中的CONSOLEFONT设置为/usr/share/consolefonts/下的一个文件(不含.psfu.gz)。lat9w-16有欧元符号。

代码 7.1: 设置控制台字体

CONSOLEFONT="lat9w-16"

应检验一下CONSOLEFONT是否在boot启动级别:

代码 7.2: 检验启动级别是否正确

# rc-update -v show | grep -i consolefont

如果显示结果没有关于CONSOLEFONT的启动级别,就要把它添加到正确的级别:

代码 7.3: 添加consolefont到boot

# rc-update add consolefont boot

8.  X中的欧元符号

绝大部分应用程序

要让欧元符号在X中正确地工作有点麻烦。首先要做的事是修改/usr/share/fonts/misc/fonts.aliasfixedvariable的定义,将末尾的iso8859-1替换为iso8859-15

代码 8.1: 设置默认的X字体

fixed        -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-15
variable     -*-helvetica-bold-r-normal-*-*-120-*-*-*-*-iso8859-15

有些应用程序使用它们自己的字体,你必须分别告诉它们使用一个含欧元符号的字体。你可以在.Xdefaults中做特定用户级别的设置(可以将这个文件复制到/etc/skel/下给新用户使用),也可以在/usr/share/X11/app-defaults/下的一个资源文件中为任何应用程序做全局级别的设置(如xterm)。一般在这些文件中你只要修改现有的一行内容,而不需要添加新的一行。举个例子,更改我们的xterm的字体:

代码 8.2: 为xterm设定字体

(在你的主目录下)
$ echo 'XTerm*font: fixed' >> .Xresources 
$ xrdb -merge .Xresources

(X)Emacs中的欧元符号

要在(X)Emacs中使用欧元符号,将下面的内容加入.Xdefaults

代码 8.3: 为emacs设定字体

Emacs.default.attributeFont: -*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-15

对于XEmacs(非纯Emacs),必须多做点事。在/home/user/.xemacs/init.el中加入:

代码 8.4: 为xemacs设定字体

(define-key global-map '(EuroSign) '[€])

注意: []中的符号为欧元符号。

OpenOffice.Org

当前稳定版的app-office/openofficeapp-office/openoffice-bin的ebuild支持LINGUAS变量,用以选择已安装的GUI语言包。要了解关于你的语言的GUI翻译、排版、拼写校验以及其它本地化的情况,请参考OpenOffice.Org本地化网站



打印

更新于2009年 6月 22日

本文档的原始版本最后更新于2009年 11月 15日

总结: 本指南帮助用户将他们的Gentoo Linux发行版本地化为任何欧洲的locale。本文是由德语文档翻译而来的,因此它以德国作为案例分析。其中包含欧元货币符号的使用配置。

Alexander Holler
作者

Steven Lucy
译者/编辑

Benny Chuang
编辑

Lars Weiler
编辑

Tobias Scherbaum
编辑

Flammie Pirinen
编辑

Joshua Saddler
编辑

Hans Joanphan
译者

叶宝泰
译者

Donate to support our development efforts.

Support OSL
Gentoo Centric Hosting: vr.org
Tek Alchemy
SevenL.net
Global Netoptex Inc.
Bytemark
Online Kredit Index
Copyright 2001-2009 Gentoo Foundation, Inc. Questions, Comments? Contact us.