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