25.2.使用本地化
FreeBSD 的本地化设置基于三个组件:语言代码、区域代码和编码。区域设置名称由这些部分构成,如下所示:
语言代码 和 区域代码 用于确定区域和特定的语言变体。常见语言和区域代码 提供了一些 语言代码_区域代码 的示例:
表 1. 常见语言和区域代码
en_US
英语,美国
ru_RU
俄语,俄罗斯
zh_TW
繁体中文,台湾
可以通过键入以下命令查看可用的完整区域设置列表:
要查看当前的区域设置:
语言特定字符集,如 ISO8859-1、ISO8859-15、KOI8-R 和 CP437,在 multibyte(3) 中有描述。活动字符集列表可以在 IANA 注册表 中找到。
一些语言,如中文或日语,不能使用 ASCII 字符表示,需要使用宽字符或多字节字符的扩展语言编码。例如,EUC 和 Big5 就是宽字符或多字节编码的例子。较旧的应用程序可能会错误地将这些编码识别为控制字符,而较新的应用程序通常可以识别这些字符。根据实现的不同,用户可能需要为应用程序编译宽字符或多字节字符支持,或正确配置它。
注意
FreeBSD 使用与 Xorg 兼容的区域编码。
本节的其余部分描述了在 FreeBSD 系统上配置区域设置的各种方法。接下来的部分将讨论如何找到和编译支持 i18n 的应用程序。
25.2.1. 设置登录 shell 的区域设置
区域设置可以在用户的 ~/.login_conf 文件中或用户 shell 的启动文件中配置:~/.profile、~/.bashrc 或 ~/.cshrc。
需要设置两个环境变量:
LANG
:设置区域设置MM_CHARSET
:设置应用程序使用的 MIME 字符集
除了用户的 shell 配置外,这些变量还应为特定的应用程序配置和 Xorg 配置设置。
有两种方法可以进行所需的变量分配:推荐的方法是通过 登录类,另一种是通过 启动文件 方法。接下来的两个小节将演示如何使用这两种方法。
25.2.1.1. 登录类方法
这是推荐的方法,它为每个可能的 shell 分配所需的区域设置和 MIME 字符集环境变量。此设置可以由每个用户执行,也可以由超级用户为所有用户配置。
以下是个最简单的示例,在个人用户的 .login_conf 中为 Latin-1 编码设置两个变量:
以下是一个用户的 ~/.login_conf 示例,为繁体中文 Big5 编码设置变量。由于一些应用程序没有正确遵循区域设置变量,因此需要更多的变量来确保应用程序正确工作:
另外,超级用户可以为系统上的所有用户配置本地化设置。以下变量可以在 /etc/login.conf 中设置区域设置和 MIME 字符集:
例如,之前提到的 Latin-1 示例在 /etc/login.conf 中的配置如下:
有关这些变量的更多细节,请参见 login.conf(5)。请注意,它已经包含了预定义的 russian 类。
每次编辑 /etc/login.conf 后,记得执行以下命令以更新权限数据库:
注意
对于最终用户来说,需要在 ~/.login_conf 上运行命令
cap_mkdb
,才能使更改生效。
25.2.1.1.1. 更改登录类的实用程序
除了手动编辑 /etc/login.conf 外,还可以使用一些实用程序为新创建的用户设置区域设置。
使用 vipw
添加新用户时,可以指定 language 来设置区域设置:
使用 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 中的等效设置:
更复杂的是,配置 Xorg 的语法也取决于所使用的 shell。在 ~/.xinitrc 中,sh
shell 和 csh
shell 的配置示例如下:
25.2.2. 控制台设置
控制台提供了多种本地化字体。要查看可用字体列表,可以键入 ls /usr/share/syscons/fonts
。要配置控制台字体,在 /etc/rc.conf 中指定 font_name,不带 .fnt 后缀:
可以通过添加以下内容到 /etc/rc.conf 来设置键盘映射和屏幕映射:
要查看可用屏幕映射的列表,可以键入 ls /usr/share/syscons/scrnmaps
。在指定 screenmap_name 时,请不要包括 .scm 后缀。通常需要一个对应的映射字体的屏幕映射作为变通方法,来扩展 VGA 适配器字体字符矩阵中的位 8 到位 9,从而使字母从伪图形区移出(如果屏幕字体使用位 8 列)。
要查看可用键盘映射的列表,可以键入 ls /usr/share/syscons/keymaps
。在指定 keymap_name 时,请不要包括 .kbd 后缀。要在不重启的情况下测试键盘映射,可以使用 kbdmap(1)。
keychange
条目通常需要用来编程功能键,以匹配所选的终端类型,因为功能键序列不能在键盘映射中定义。
接下来,设置正确的控制台终端类型,在 /etc/ttys 中为所有虚拟终端条目配置。以下是 定义的字符集终端类型 的总结:
表 2. 字符集的定义终端类型
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 总结在 来自 Ports 的可用控制台 中。安装完成后,查看端口的 pkg-message 或 man 页面以获取配置和使用说明。
表 3. 来自 Ports 的可用控制台
繁体中文 (BIG-5)
中文/日语/韩语
中文/日语/韩语
如果在 /etc/rc.conf 中启用了 moused
,可能还需要进行额外的配置。默认情况下,syscons(4) 驱动程序的鼠标光标占用字符集中的 0xd0
到 0xd3
范围。如果语言使用该范围,请通过在 /etc/rc.conf 中添加以下行来移动鼠标的字符范围:
25.2.3. Xorg 设置
The X Window System 介绍了如何安装和配置 Xorg。在为 Xorg 配置本地化时,可以从 FreeBSD Ports 获取额外的字体和输入法。应用程序特定的国际化设置,如字体和菜单,可以在 ~/.Xresources 文件中进行调整,允许用户在图形应用程序的菜单中查看所选语言。
X 输入法(XIM)协议是 Xorg 标准,用于输入非英文字符。可用输入法 总结了 FreeBSD Ports 中可用的输入法应用程序。额外的 Fcitx 和 Uim 应用程序也可供使用。
表 4. 可用输入法
最后更新于