For the complete documentation index, see llms.txt. This page is also available as Markdown.

12.2 特定语言的区域配置

本节阐述在 FreeBSD 系统中配置区域设置的多种方法。

使用本地化

本地化设置基于三个组件:语言代码、区域代码和编码。区域设置名称由这些部分构成,如下所示:

语言代码(小写)_区域代码(大写).编码

语言代码区域代码 用于确定区域和特定的语言变体。以下是一些 语言代码_区域代码 的示例:

常见语言和区域代码

语言代码_区域代码_编码
说明

en_US.UTF-8

美国(英语)

zh_CN.UTF-8

中国(简体中文)

zh_TW.UTF-8

中国台湾(繁体中文)

zh_HK.UTF-8

中国香港(繁体中文)

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

$ locale -a | more
C
C.UTF-8
POSIX
af_ZA.ISO8859-1
af_ZA.ISO8859-15
af_ZA.UTF-8
am_ET.UTF-8
ar_AE.UTF-8
ar_EG.UTF-8
ar_JO.UTF-8
ar_MA.UTF-8
ar_QA.UTF-8
ar_SA.UTF-8
be_BY.CP1131
be_BY.CP1251
be_BY.ISO8859-5
be_BY.UTF-8
bg_BG.CP1251
bg_BG.UTF-8
ca_AD.ISO8859-1
ca_AD.ISO8859-15
ca_AD.UTF-8
ca_ES.ISO8859-1
ca_ES.ISO8859-15
ca_ES.UTF-8
--More--(byte 314) # 此处按回车键可继续浏览,按 q 键可退出

使用 locale 命令查看当前系统的本地化设置:

中文或日语等语言无法用 ASCII 字符表示,需要使用宽字符或多字节字符的扩展语言编码,建议使用 UTF-8

注意

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

设置登录 shell 的区域设置

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

需要设置两个环境变量:

  • LANG:设置区域设置

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

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

有两种方法可以设置所需的变量:推荐的方法是通过登录分级,另一种是通过启动文件。

登录分级方法

这是推荐的方法,它为每种 shell 设置所需的区域设置和 MIME 字符集环境变量。此设置可由每位用户单独完成,也可由超级用户为所有用户统一配置。

以下是一个最简单的示例,在个人用户的 ~/.login_conf 中为简体中文(UTF-8 编码)设置两个变量:

以下是一个用户的 ~/.login_conf 示例,为简体中文 UTF-8 编码设置变量。一些应用程序未能正确处理中文、日文和韩文的区域设置变量,因此需要更多变量以确保其正常运行:

注意

setenv 与 csh 无关。

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

例如,之前提到的简体中文示例在 /etc/login.conf 中可配置如下:

技巧

该文件包含了预定义的 russian 分级文件。

每次编辑 /etc/login.conf 后,需要执行以下命令以重新生成登录能力数据库:

注意

最终用户需要在 ~/.login_conf 上运行 cap_mkdb 命令才能使更改生效。

更改登录分级的工具

除了手动编辑 /etc/login.conf 外,还可以使用一些工具为新创建的用户设置区域设置。

使用 vipw 添加新用户时,可以指定 chinese 分级将区域设置为简体中文(UTF-8 编码):

例如要为用户 ykla 分配 chinese 分级,目前未分配任何自定义用户分级:

分配后,则为:

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

若所有新用户使用相同的语言(假设为简体中文),可以在 /etc/adduser.conf 中设置 defaultclass=chinese

创建用户时如需覆盖此设置,可在以下提示符处输入所需的登录类别:

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

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

要更改既有用户的登录分级,可以使用 chpass 或者 pw usermod。以 root 调用并提供要编辑的用户名作为参数:

验证修改结果:

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 的配置示例如下:

控制台设置

VT 控制台默认使用 xterm 作为终端类型。

字体

FreeBSD VT 控制台原生支持 CJK 字符集(中日韩统一表意文字),加载字体即可显示中文。所需字体格式为 .fnt:这是一种二进制字体文件,而非码表加 PNG 图片的集合。

使用命令切换控制台字体为 test.fnt(仅当前会话生效,重启后恢复默认字体):

FreeBSD 基本系统提供了一款工具,可将 bdf 或 hex 格式转换为 fnt 文件,其中 -o 为必选参数:

中文字体示例:

未加入字体的 tty

技巧

如果上述链接失效,请访问 https://github.com/FreeBSD-Ask/fnt-fonts 下载字体。

设置完成后的 tty

上述命令仅临时生效,如需永久生效,应加入 /etc/rc.conf 文件:

键盘布局

键盘布局文件位于 /usr/share/vt/keymaps/

例如要将当前的布局改为国际美式键盘,在 /etc/rc.conf 文件中加入:

技巧

在指定 键盘布局 时,请勿包含后缀名 .kbd

重启后生效。

要在不重启的情况下测试键盘布局,可以使用 kbdmap 命令交互式选择键盘布局:

使用 kbdmap 选择键盘布局

输入法

可用输入法 总结了 FreeBSD Ports 中可用的输入法应用程序。

Fcitx 5 可用输入法表

语言
输入法

简体中文(拼音)

繁体中文(注音)

繁体中文(注音)

中文(RIME)

中文(形码输入法)

日语(Anthy)

日语(SKK)

日语(SKK)

非中文输入法码表

IBus 可用输入法表

语言
输入法

简体中文(拼音)

繁体中文(注音)

中文(RIME)

日语(Anthy)

日语(Mozc)

日语(SKK)

故障排除与未竟事宜

如何手动生成中文字体的 fnt 文件

https://github.com/usonianhorizon/vt-fnt 提供的方法较为复杂,可生成 bdf 文件,但会出现与文中相同的错误提示。该项目探索了 FreeBSD 控制台字体的生成方法。文中提及的 FontForge 软件提供 Windows 版本,下载地址为 https://fontforge.org/en-US/downloads/windows-dl/

参考文献

最后更新于