22.2. 使用本地化

本地化设置基于三个组件:语言代码、国家/地区代码和编码。区域设置名称由以下部分构造:

语言代码_国家代码.编码

语言代码和国家代码用于设置地区和语言。表 22.1 “通用语言和国家代码” 提供了一些有关语言代码和国家代码的例子:

表 22.1. 通用语言和国家代码
语言和地区代码描述
en_US英语,美国
ru_RU俄语,俄罗斯
zh_TW繁体中文,台湾

可以通过这个命令获得所有区域设置代码:

% locale -a | more

获取当前的区域设置代码:

% locale

特定语言的简单C字符集 (参见 multibyte(3)),例如 ISO8859-1, ISO8859-15, KOI8-R, CP437。您可以在IANA Registry检查一下现行的字符集列表。

某些语言(如中文或日语)无法使用ASCII字符表示,并且需要使用宽字符或多字节字符进行扩展语言编码。宽或多字节编码的示例包括 EUC 和 Big5。较旧的应用程序可能会将这些编码误认为控制字符,而较新的应用程序通常可识别这些字符。根据实现的不同,用户可能需要编译具有宽或多字节字符支持的应用程序,或正确配置它。

注意:

FreeBSD 使用与 Xorg 兼容的区域设置编码。

本节的其余部分描述了在FreeBSD系统上配置语言环境的各种方法。下一节将讨论使用 i18n 支持查找和编译应用程序的注意事项。

22.2.1. 为登入 Shell 本地化策略集(locale)

本地化策略集一般通过设置用户的 ~/.login_conf 或用户shell的启动文件(~/.profile~/.bashrc, ~/.cshrc)。

应设置两个环境变量:

  • LANGPOSIX®设置本地化语言功能。

  • MM_CHARSET,它设置应用程序使用的MIME字符集

除了用户的shell配置之外,还应该为特定的应用程序配置和Xorg配置设置这些变量。

有两种方法可用于进行所需的变量分配:login class 方法(推荐的方法)和startup file方法。接下来的两部分演示如何使用这两种方法。

22.2.1.1. Login Classes 方法

推荐使用第一种方法,因为它为每个可能的 shell 分配区域设置名称和 MIME 字符集所需的环境变量。此设置可以由每个用户执行,也可以由超级用户为所有用户配置。

最简单的例子:在用户目录中的.login_conf中设置两个 Latin-1编码变量:

me:\
	:charset=ISO-8859-1:\
	:lang=de_DE.ISO8859-1:

这是一个为.login_conf设置繁体中文的BIG-5编码的例子。应该设置下面的大部分变量, 因为有些应用程序不正确地识别中文、日文和韩文的语言环境变量:

#Users who do not wish to use monetary units or time formats
#of Taiwan can manually change each variable
me:\
	:lang=zh_TW.Big5:\
	:setenv=LC_ALL=zh_TW.Big5,LC_COLLATE=zh_TW.Big5,LC_CTYPE=zh_TW.Big5,LC_MESSAGES=zh_TW.Big5,LC_MONETARY=zh_TW.Big5,LC_NUMERIC=zh_TW.Big5,LC_TIME=zh_TW.Big5:\
	:charset=big5:\
	:xmodifiers="@im=gcin": #Set gcin as the XIM Input Server

超级用户可以为所有用户进行本地化设置。/etc/login.conf中的变量用于设置 locale 和MIME字符集:

language_name|Account Type Description:\
	:charset=MIME_charset:\
	:lang=locale_name:\
	:tc=default:

所以,之前的 Latin-1 示例如下所示:

german|German Users Accounts:\
	:charset=ISO-8859-1:\
	:lang=de_DE.ISO8859-1:\
	:tc=default:

关于这些变量的更多详细信息,请参阅login.conf(5)。请注意,它已包含预定义的russian类。

每当编辑/etc/login.conf时,请记住执行以下命令以更新数据库:

# cap_mkdb /etc/login.conf
22.2.1.1.1. 修改登入类的工具

除了手动编辑/etc/login.conf之外,还有几个实用程序可用于为新创建的用户设置区域设置。

使用vipw添加新用户时,请设置language

user:password:1111:11:language:0:0:User Name:/home/user:/bin/sh

使用adduser添加新用户时,可以为所有新用户预配置默认语言,也可以为单个用户指定默认语言。

如果所有新用户使用相同的语言,在/etc/adduser.conf中设置defaultclass=language

要在创建用户时重写此设置,请在此提示符处输入所需的区域设置:

Enter login class: default []:

或指定在调用加载用户adduser时要设置的区域设置:

# adduser -class language

如果使用pw添加新用户,请指定区域设置,如下所示:

# pw useradd user_name -L language

要更改现有用户的登录类,可以使用chpass。调用它作为超级用户,并提供用户名编辑作为参数。

# chpass user_name

22.2.1.2. Shell 启动文件方法

第二种方法,较不建议使用,因每一种使用到的Shell都需要手动设定,而每一种Shell都有不同的配置文件以及语法。例如将一位使用者的sh shell设定为德语,需要将下列行加到~/.profile,若要设定给使用该Shell的所有使用者则必须将下列行加到/etc/profile/usr/share/skel/dot.profile

LANG=de_DE.ISO8859-1; export LANG
MM_CHARSET=ISO-8859-1; export MM_CHARSET

然而,在csh shell所使用的配置文件名称及语法不同。同样的设定需加入下列行至~/.csh.login/etc/csh.login/usr/share/skel/dot.login

setenv LANG de_DE.ISO8859-1
setenv MM_CHARSET ISO-8859-1

更复杂一点的情况,Xorg~/.xinitrc语系设定会依使用的Shell而有所不同。第一个例子是针对sh shell而第二个则是针对csh shell:

LANG=de_DE.ISO8859-1; export LANG
setenv LANG de_DE.ISO8859-1

22.2.2. 控制台设置

已有许多语系的字体可在Console使用,要查看可用的字体清单,可输入ls /usr/share/syscons/fonts。要设定Console的字体,可在/etc/rc.conf指定去掉.fnt后缀的字体名称font_name

font8x16=font_name
font8x14=font_name
font8x8=font_name

键盘对应表(Keymap)及屏幕对应表(Screenmap)用可加入下行到/etc/rc.conf来设定:

scrnmap=screenmap_name
keymap=keymap_name
keychange="fkey_number sequence"

要查看可用的屏幕对应表,可输入ls /usr/share/syscons/scrnmaps。在设定屏幕对应表screenmap_name时请去掉.scm后缀。在VGA Adapter的字体字元矩阵扩充位8到位元9时会需要使用屏幕对应表与相关的字体对应来解决,因此若屏幕字体使用位8的字段,字母会移出虚拟绘图区(Pseudographics area)。

要查看可用的键盘对应表,可输入ls /usr/share/syscons/keymaps。在设定键盘对应表keymap_name时请去掉.kbd后缀。若要不重开机测试键盘对应用可使用kbdmap(1)

keychange项目用在当功能键序列无法定义在键盘对应表时,可设定对应选择终对机类型的功能键。

接下来,在/etc/ttys为所有虚拟终端机项目设定正确的Console终端机类型。表 22.2 “已定义供特定字元集使用的终端机类型”摘要了可用的终端机类型:

表 22.2. 已定义供特定字元集使用的终端机类型
字符集终端类型
ISO8859-1 or ISO8859-15cons25l1
ISO8859-2cons25l2
ISO8859-7cons25l7
KOI8-Rcons25r
KOI8-Ucons25u
CP437(VGA 默认值)cons25
US-ASCIIcons25w

对于使用宽字元或多位元组字元的语言,需从Port套件集安装支持该语言的Console。可用的Port摘要在表 22.3 “Ports Collection 中可用的控制台”。安装完成之后,请参考Port的pkg-message或操作手册来取得设定及使用说明。

表 22.3. Ports Collection 中可用的控制台
语言软件
翻译中文(BIG-5)chinese/big5con
中文/日文/韩语chinese/cce
中文/日文/韩语chinese/zhcon
日语chinese/kon2
日语japanese/kon2-14dot
日语japanese/kon2-16dot

若在/etc/rc.conf有开启moused,可能会需要额外的设定。预设syscons(4)驱动程序的鼠标光标会占用字元集0xd0-0xd3的范围,若语言有使用到此范围,可加入以下行到/etc/rc.conf来移动光标的范围:

mousechar_start=3

22.2.3. 设置 Xorg

第 5 章 X Window系统会说明如何安装并设定Xorg。当要设定Xorg在地化时,可从FreeBSD Port套件集中取得其他可用的字体及输入法。应用程序特定的i18n设定像是字体与菜单,可以在~/.Xresources中调校且可允许使用者在图型化应用程序菜单检视其所选择的语言。

X输入法(X Input Method,XIM)协定是Xorg针对输入非英语字元的标准。表 22.4 “可用的输入方法”摘要了在FreeBSD套件集中可用的输入法应用程序。也可使用其他如Fcitx及Uim应用程序。


本文档和其它文档可从这里下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题,请先阅读 文档,如不能解决再联系 <questions@FreeBSD.org>.

关于本文档的问题请发信联系 <doc@FreeBSD.org>.