Comment on page
25.2.使用本地化
本地化设置主要基于三个部分:语言代码、国家代码(地区)和编码。本地化名称是由这些部分构成的,如下所示:
语言代码_国家代码(地区).编码
语言代码和国家代码用于确定国家(地区)和具体的语言变化。通用语言和国家(地区)代码提供了一些语言代码_国家(地区)代码的例子。
表 15. 常见的语言和国家(地区)代码
语言代码_国家(地区)代码 | 代指 |
---|---|
en_US | 英语,美国 |
ru_RU | 俄语,俄罗斯 |
zh_TW | 繁体中文,中国台湾 |
完整的可用语言列表可以通过输入以下内容找到:
% locale -a | more
要确定当前的地区设置。
% locale
有些语言,如中文或日文,不能用 ASCII 字符表示,需要用宽字符或多字节字符进行扩展语言编码。宽字符或多字节编码的例子包括 EUC 和 Big5。老的应用程序可能会误认为这些编码是控制字符,而新的应用程序通常会识别这些字符。根据具体实现,用户可能需要编译软件以支持宽字符或多字节字符,或者对其进行正确的配置。
注意FreeBSD 使用与 Xorg 兼容的地区编码。
本节的其余部分将说明在 FreeBSD 系统上配置 locale 的各种方法。下一节将讨论寻找和编译支持 i18n 的应用程序的注意事项。
地区设置是在用户的 ~/.login_conf 或用户 shell 的启动文件 ~/.profile,~/.bashrc,或 ~/.cshrc 中配置的。
有需要对两个环境变量进行设置:
LANG
,用于设置语言环境MM_CHARSET
,设置应用程序使用的 MIME 字符集
除了配置用户的 shell 之外,还应该为特定的应用程序配置和 Xorg 配置设置这些变量。
这第一种是推荐的方法,因为它为每个可能的 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:\
另外,超级用户可以对系统的所有用户进行本地化配置。在 /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:
每当编辑 /etc/login.conf 后,记得执行以下命令来更新数据库能力:
# cap_mkdb /etc/login.conf
注意对于终端用户来说,需要在他们的 ~/.login_conf 上运行cap_mkdb
命令,以使任何改变生效。
除了手动编辑 /etc/login.conf 之外,还有几个工具可以用来为新创建的用户设置 locale。
当使用
vipw
添加新用户时,指定 language 来设置 locale:user:password:1111:language:0:0:User Name:/home/user:/bin/sh
当使用
adduser
添加新用户时,可以为所有新用户预先配置默认语言,也可以为单个用户指定。如果所有新用户都使用相同的语言,在 /etc/adduser.conf中设置
defaultclass=
language。要在创建用户时覆盖这个设置,可以在这个提示下输入所需的地区语言:
Enter login class: default []:
或者在调用
adduser
时指定要设置的 locale:# adduser -class language
如果使用
pw
来添加新的用户,请按以下方式指定 locale:# pw useradd user_name -L language
要改变一个现有用户的登录分级,可以使用
chpass
。以超级用户身份调用它,并提供要编辑的用户名作为参数:# chpass user_name
不推荐使用这种方法,因为每个使用的 shell 都需要进行手动配置,每个 shell 都有不同的配置文件和不同的语法。举个例子,为了给
sh
设置德语,可以在 ~/.profile 中加入这些行,以设置仅适用于该用户的 shell。这些行也可以添加到 /etc/profile 或 /usr/share/skel/dot.profile 中,以便为所有用户都设置该 shell:LANG=de_DE.ISO8859-1; export LANG
MM_CHARSET=ISO-8859-1; export MM_CHARSET
然而,对于 csh 来说,配置文件的名称和使用的语法是不同的。这些是以上设置的同等文件 ~/.login、/etc/csh.login 和 /usr/share/skel/dot.login:
setenv LANG de_DE.ISO8859-1
setenv MM_CHARSET ISO-8859-1
使问题复杂化的是,在 ~/.xinitrc 中配置 Xorg 所需的语法也取决于 shell。第一个例子是针对 sh 的,第二个是针对 csh 的:
LANG=de_DE.ISO8859-1; export LANG
setenv LANG de_DE.ISO8859-1
有几种本地化的字体可用于控制台。要查看可用字体的列表,请输入
ls /usr/share/syscons/fonts
。要配置控制台字体,在 /etc/rc.conf 中指定 font_name,不含 .fnt 后缀:font8x16=font_name
font8x14=font_name
font8x8=font_name
可以通过在 /etc/rc.conf 中添加以下内容来设置键盘映射和屏幕映射:
scrnmap=screenmap_name
keymap=keymap_name
keychange="fkey_number sequence"
要查看可用的屏幕映射列表,输入
ls /usr/share/syscons/scrnmaps
。在指定 screenmap_name 时,无需 .scm 后缀。通常需要一个带有相应映射字体的屏幕映射,作为 VGA 适配器字体字符矩阵上的第 8 位扩展到第 9 位的变通方法,这样,如果屏幕字体使用第 8 位列,字母就会被移出伪图区。要查看可用的键盘映射,请输入
ls /usr/share/syscons/keymaps
。当指定 keymap_name 时,无需 .kbd 后缀。要在不重启的情况下测试键盘映射,请使用 kbdmap(1)。由于不能在键盘映射中定义功能键序列,因此通常需要使用
keychange
条目来对功能键进行编程以匹配所选的终端类型。表 16. 为字符集定义的终端类型
字符集 | 终端类型 |
---|---|
ISO8859-1 或 ISO8859-15 | cons25l1 |
ISO8859-2 | cons25l2 |
ISO8859-7 | cons25l7 |
KOI8-R | cons25r |
KOI8-U | cons25u |
CP437 (VGA 默认) | cons25 |
US-ASCII | cons25w |
对于使用宽字符或多字节字符的语言,应从 FreeBSD ports 中安装适合该语言的控制台。可用的 port 的可用终端的 port 中进行了 总结。安装完毕后,请参考 port 的 pkg-message 或 man 页面以了解配置和使用说明。
语言 | port 位置 |
---|---|
繁体中文 (BIG-5) | |
中文/日语/韩语 | |
中文/日语/韩语 | |
日语 | |
日语 | |
日语 |
如果在 /etc/rc.conf 中启用了 moused,可能需要额外的配置。默认情况下,驱动 syscons(4) 的鼠标光标在字符集中占据范围
0xd0-0xd3
。如果语言使用了这个范围,请在 /etc/rc.conf 中添加以下一行来移动光标的范围:mousechar_start=3
X Window 系统 介绍了如何安装和配置 Xorg。在为本地化配置 Xorg 时,可以从 FreeBSD ports 中获得额外的字体和输入法。可以在 ~/.Xresources 中调整应用程序特定的 i18n 设置,如字体和菜单,并可让用户在图形化的应用程序菜单中查看他们选择的语言。
语言 | 输入法 |
---|---|
中文 | |
中文 | |
中文 | |
中文 | |
中文 | |
中文 | |
中文 | |
日语 | |
日语 | |
日语 | |
日语 | |
日语 | |
日语 | |
日语 | |
日语 | |
日语 | |
日语 | |
日语 | |
日语 | |
日语 | |
日语 | |
日语 | |
日语 | |
日语 | |
日语 | |
韩语 | |
韩语 | |
韩语 | |
韩语 | |
越南语 | |
越南语 |