Chinaunix首页 | 论坛 | 博客
  • 博客访问: 618364
  • 博文数量: 140
  • 博客积分: 2635
  • 博客等级: 少校
  • 技术积分: 1353
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-04 15:46
文章分类
文章存档

2015年(2)

2014年(12)

2013年(10)

2012年(10)

2011年(85)

2010年(21)

分类: LINUX

2013-06-21 14:40:54

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-l10napp-office/openoffice。这个变量的值为一组以空格隔开的语言代码,建议将其设置在/etc/make.conf中:

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

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

生成指定的Locale

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

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

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

下一步是执行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-l10napp-office/koffice-l10n软件包。这些包与前面描述的有关。

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) '[?])

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

阅读(5795) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~