第二十五章 本地化-i18n/L10n使用和设置

第二十五章 本地化-i18n/L10n使用和设置25.1. 简介25.2. 使用本地化25.2.1. 设置登录Shell的区域设置25.2.1.1. 登录类方法25.2.1.1.1. 更改登录类的实用程序25.2.1.2. Shell启动文件方法25.2.2. 控制台设置25.2.3. Xorg设置25.3. 查找 i18n 应用程序25.4. 特定语言的区域设置25.4.1. 俄语(KOI8-R编码)25.4.2. 其他特定语言资源

25.1. 简介

FreeBSD是一个分布式项目,用户和贡献者遍布世界各地。因此,FreeBSD支持多种语言的本地化,允许用户以非英语语言查看、输入或处理数据。人们可以从大多数主要语言中进行选择,包括但不限于:中文、德语、日语、韩语、法语、俄语和越南语。

国际化一词已缩短为i18n ,表示internationalization(国际化)的第一个字母和最后一个字母之间的字母数。L10n 使用相同的命名方案,但来自 localization (本地化)。i18n/L10n方法、协议和应用程序允许用户使用他们选择的语言。

本章讨论FreeBSD的国际化和本地化特性。阅读本章后,你会知道:

• 如何构造区域名称。 • 如何设置登录shell的区域设置。 • 如何为非英语语言配置控制台。 • 如何为不同语言配置Xorg。 • 如何找到符合i18n标准的应用程序。 • 在哪里可以找到配置特定语言的更多信息。

在阅读本章之前,您应该:

• 知道如何安装其他第三方应用程序。

25.2. 使用本地化

本地化设置基于三个组件:语言代码(language code)、国家代码(country code)和编码(encoding)。区域名称由以下部分构成:

LanguageCodeCountryCode 用于确定国家和特定的语言变体。下表【通用语言和国家代码】提供了 LanguageCode_CountryCode 的一些示例:

表35. 通用语言和国家代码

LanguageCode_Country Code说明
en_US英语,美国
ru_RU俄语,俄罗斯
zh_TW繁体中文,台湾

键入以下命令可以找到可用区域设置的完整列表:

要确定当前区域设置,请执行以下操作:

multibyte(3) 中描述了特定于语言的字符集,如ISO8859-1、ISO8859-15、KOI8-R和CP437。字符集的活动列表可以在 IANA注册表 中找到。

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

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

25.2.1. 设置登录Shell的区域设置

区域设置可以在用户的 ~/.login_conf 或用户shell的启动文件中配置:~/.profile~/.bashrc~/.cshrc

应设置两个环境变量:

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

有两种方法可用于进行所需的变量赋值: login class 方法,这是推荐的方法,以及 startup file 方法。接下来的两节将演示如何使用这两种方法。

25.2.1.1. 登录类方法

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

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

这是一个用户 ~/.login_conf 的示例,它以BIG-5编码设置繁体中文的变量。需要更多的变量,因为一些应用程序没有正确尊重中文、日文和韩文的区域设置变量:

或者,超级用户可以配置系统的所有用户进行本地化。/etc/login.conf 中的以下变量用于设置区域设置和MIME字符集:

因此,前面的Latin-1示例如下:

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

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

25.2.1.1.1. 更改登录类的实用程序

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

使用 vipw 添加新用户时,请指定设置区域设置的语言:

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

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

要在创建用户时覆盖此设置,请在此提示下输入所需的区域设置:

或者指定调用 adduser 时要设置的区域设置:

如果使用 pw 添加新用户,请按如下方式指定区域设置:

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

25.2.1.2. Shell启动文件方法

不建议使用第二种方法,因为使用的每个shell都需要手动配置,每个shell都有不同的配置文件和不同的语法。例如,要为 sh shell设置德语,可以将这些行添加到 ~/.profile 中,以便仅为该用户设置shell。这些行也可以添加到 /etc/profile/usr/share/skel/dot.profile 中,为所有用户设置shell:

但是,配置文件的名称和使用的语法对于 csh shell是不同的。这些是 ~/.login/etc/csh.login/usr/share/skel/dot.login 的等效设置:

更复杂的是,在 ~/.xinitrc 中配置Xorg所需的语法也取决于shell。第一个例子是 sh shell,第二个例子是 csh shell:

25.2.2. 控制台设置

控制台提供了几种本地化字体。要查看可用字体的列表,请键入 ls /usr/share/syscons/fonts 。要配置控制台字体,请在 /etc/rc.conf 中指定不带 .fnt 后缀的 font_name

可以通过在 /etc/rc.conf 中添加以下内容来设置键盘映射和屏幕映射:

要查看可用屏幕地图的列表,请键入 ls /usr/share/syscons/scrnmaps 。指定 screenmap_name 时不要包含 .scm 后缀。通常需要一个具有相应映射字体的屏幕映射,作为在VGA适配器的字体字符矩阵上将位8扩展到位9的解决方法,这样如果屏幕字体使用位8列,字母就会移出伪图形(pseudographics)区域。

要查看可用密钥映射列表,请键入 ls /usr/share/syscons/keymaps 。指定 keymap_name 时,不要包含 .kbd 后缀。要在不重新启动的情况下测试密钥映射,请使用 kbdmap(1)

通常需要 keychange 条目来对功能键进行编程,以匹配所选的终端类型,因为功能键序列无法在键映射中定义。

接下来,在 /etc/ttys 中为所有虚拟终端条目设置正确的控制台终端类型。下表总结了可用的终端类型。

表36. 为字符集定义的终端类型

字符集终端类型
ISO8859-1 或 ISO8859-15cons25l1
ISO8859-2cons25l2
ISO8859-7cons25l7
KOI8-Rcons25r
KOI8-Ucons25u
CP437 (VGA default)cons25
US-ASCIIcons25w

对于具有宽字符或多字节字符的语言,请从FreeBSD端口集合中安装该语言的控制台。可用端口汇总在下表中。安装后,请参阅端口的pkg消息或手册页以获取配置和使用说明。

表37. Ports Collection中可用的控制台

语言Port location
Traditional Chinese (BIG-5)chinese/big5con
Chinese/Japanese/Koreanchinese/cce
Chinese/Japanese/Koreanchinese/zhcon
Japanesechinese/kon2
Japanesejapanese/kon2-14dot
Japanesejapanese/kon2-16dot

如果在 /etc/rc.conf 中启用了 moused,则可能需要进行其他配置。默认情况下, syscons(4) 驱动程序的鼠标光标占据字符集中的 0xd0-0xd3 范围。如果语言使用此范围,请通过在 /etc/rc.conf 中添加以下行来移动光标的范围:

25.2.3. Xorg设置

【5. X Window系统】描述了如何安装和配置Xorg。在配置Xorg进行本地化时,FreeBSD Ports Collection提供了其他字体和输入法。特定于应用程序的i18n设置,如字体和菜单,可以在 ~/.Xresources 中进行调整,并应允许用户在图形应用程序菜单中查看他们选择的语言。

X输入法(X Input Method,XIM)协议是用于输入非英语字符的Xorg标准。可用输入法总结了FreeBSD Ports Collection中可用的输入法应用程序。还提供其他Fcitx和Uim应用程序。

表38. 可用输入法

语言输入法
中文chinese/gcin
中文chinese/ibus-chewing
中文chinese/ibus-pinyin
中文chinese/oxim
中文chinese/scim-fcitx
中文chinese/scim-pinyin
中文chinese/scim-tables
日文japanese/ibus-anthy
日文japanese/ibus-mozc
日文japanese/ibus-skk
日文japanese/im-ja
日文japanese/kinput2
日文japanese/scim-anthy
日文japanese/scim-canna
日文japanese/scim-honoka
日文japanese/scim-honoka-plugin-romkan
日文japanese/scim-honoka-plugin-wnn
日文japanese/scim-prime
日文japanese/scim-skk
日文japanese/scim-tables
日文japanese/scim-tomoe
日文japanese/scim-uim
日文japanese/skkinput
日文japanese/skkinput3
日文japanese/uim-anthy
韩文korean/ibus-hangul
韩文korean/imhangul
韩文korean/nabi
韩文korean/scim-hangul
韩文korean/scim-tables
越南文vietnamese/xvnkb
越南文vietnamese/x-unikey

25.3. 查找 i18n 应用程序

i18n应用程序是在库下使用i18n工具包编程的。这些允许开发人员编写一个简单的文件,并将显示的菜单和文本翻译成每种语言。

FreeBSD Ports Collection包含许多内置支持多种语言的宽或多字节字符的应用程序。为了便于识别,这些应用程序的名称中包含了 i18n 。然而,它们并不总是支持所需的语言。

一些应用程序可以使用特定的字符集进行编译。这通常在端口的Makefile中完成,或者通过传递值进行配置。有关如何确定所需的配置值或端口的Makefile以确定在构建端口时使用哪些编译选项的更多信息,请参阅相应FreeBSD端口源代码中的i18n文档。

25.4. 特定语言的区域设置

本节提供了将FreeBSD系统本地化为俄语的配置示例。然后,它为其他语言的本地化提供了一些额外的资源。

25.4.1. 俄语(KOI8-R编码)

本节显示了将FreeBSD系统本地化为俄语所需的具体设置。有关每种设置类型的完整说明,请参阅使用本地化。

要为登录shell设置此区域设置,请在每个用户的 ~/.login_conf 中添加以下行:

要配置控制台,请在 /etc/rc.conf 中添加以下行:

对于 /etc/ttys 中的每个 ttyv 条目,使用 cons25r 作为终端类型。

要配置打印,需要一个特殊的输出过滤器将KOI8-R转换为CP866,因为大多数带有俄语字符的打印机都带有硬件代码页CP866。FreeBSD为此提供了一个默认过滤器 /usr/libexec/lpr/ru/koi2alt 。要使用此过滤器,请将此条目添加到 /etc/printcap

有关更详细的说明,请参阅 printcap(5)

要在已挂载的MS-DOS®文件系统中配置对俄语文件名的支持,请在向 /etc/fstab 添加条目时包含 -L 和区域设置名称:

有关更多详细信息,请参阅 mount_msdosfs(8)

要为Xorg配置俄语字体,请安装 x11-fonts/xorg-fonts-cyrillic 软件包。然后,检查 /etc/X11/xorg.conf 中的 Files 部分。必须在任何其他FontPath条目之前添加以下行:

Ports Collection中提供了其他西里尔字母(Cyrillic)字体。

要激活俄语键盘,请在 /etc/xorg.confKeyboard 部分添加以下内容:

确保 XkbDisable 在该文件中已被注释掉。

对于 grp:toggle 使用 Right Alt ,对于 grp:ctrl_shift_toggle 则使用 ctrl+shift 。对于 grp:caps_toggle ,使用 CapsLock 。旧的 CapsLock 功能在LAT模式下仍然可用,只能使用 Shift+ CapsLockgrp:caps_toggle 在Xorg中不起作用,原因未知。

如果键盘有【Windows®】键,并且一些非字母键映射不正确,请在 /etc/xorg.conf 中添加以下行:

参阅 http://koi8.pp.ru/xwin.html 有关本地化Xorg应用程序的更多说明。有关KOI8-R编码的更多一般信息,请参阅 http://koi8.pp.ru/

25.4.2. 其他特定语言资源

本节列出了配置其他语言环境的一些附加资源。