LanguageCode_CountryCode.Encoding
第 25 章 本地化 - i18n/L10n 的使用和设置
如果发现翻译错误,请直接 发起PR修改。
目录
25.1. 简介
FreeBSD 是一个分布式项目,用户和贡献者遍布全球。因此, FreeBSD 支持多种语言的本地化,允许用户以非英语语言查看、输入或处理数据。可以选择大多数主要语言,包括但不限于:中文、德语、日语、韩语、法语、俄语和越南语。
国际化一词被缩写为 i18n ,代表着“ internationalization ”中第一个字母和最后一个字母之间的字母数量。 L10n 使用相同的命名方案,但是从“ localization ”中计算。 i18n/L10n 的方法、协议和应用程序允许用户使用他们选择的语言。
本章讨论了 FreeBSD 的国际化和本地化功能。阅读本章后,您将了解到:
-
如何构建区域名称。
-
如何为登录 shell 设置区域设置。
-
如何配置控制台以支持非英语语言。
-
如何为不同的语言配置 Xorg 。
-
如何找到符合国际化标准的应用程序。
-
如何找到配置特定语言的更多信息。
在阅读本章之前,您应该:
-
了解如何交叉引用: ports[ports ,安装额外的第三方应用程序] 。
25.2. 使用本地化
本地化设置基于三个组件:语言代码、国家代码和编码。区域设置名称由这些部分构成,如下所示:
_语言代码_和_国家代码_用于确定国家和特定的语言变体。 常见的语言和国家代码 提供了一些语言代码_国家代码的示例:
语言代码_国家代码 | 描述 |
---|---|
en_US |
英语,美国 |
ru_RU |
俄罗斯,俄罗斯 |
zh_TW |
繁體中文,台灣 |
可以通过输入以下命令来查看所有可用的区域设置列表:
% locale -a | more
确定当前的区域设置:
% locale
特定语言的字符集,如 ISO8859-1 、 ISO8859-15 、 KOI8-R 和 CP437 ,在 multibyte(3) 中有描述。字符集的活动列表可以在 IANA 注册表 中找到。
一些语言,比如中文或日文,不能用 ASCII 字符表示,需要使用宽字符或多字节字符的扩展语言编码。宽字符或多字节编码的例子包括 EUC 和 Big5 。旧的应用程序可能会将这些编码误认为控制字符,而新的应用程序通常能够识别这些字符。根据实现的不同,用户可能需要使用宽字符或多字节字符支持来编译应用程序,或者正确配置它。
FreeBSD 使用与 Xorg 兼容的区域编码。 |
本节的其余部分描述了在 FreeBSD 系统上配置区域设置的各种方法。下一节将讨论查找和编译支持国际化( i18n )的应用程序的注意事项。
25.2.1. 设置登录 Shell 的区域设置
区域设置可以在用户的 [.filename]# ~ /.login_conf# 文件中或者用户的 shell 启动文件中进行配置: [.filename]# ~ /.profile# 、 [.filename]# ~ /.bashrc# 或者 [.filename]# ~ /.cshrc# 。
应设置两个环境变量:
-
LANG
,用于设置区域设置 -
MM_CHARSET
是一个设置应用程序使用的 MIME 字符集的变量。
除了用户的 shell 配置外,这些变量还应该为特定的应用程序配置和 Xorg 配置设置。
25.2.1.1. 登录类方法
这是推荐的方法,因为它为每个可能的 shell 分配了所需的区域设置和 MIME 字符集的环境变量。这个设置可以由每个用户执行,也可以由超级用户为所有用户配置。
这个最简示例在个人用户的主目录的 .login_conf 文件中设置了两个变量,用于 Latin-1 编码。
me:\ :charset=ISO-8859-1:\ :lang=de_DE.ISO8859-1:
这是一个用户的示例 [.filename]# ~ /.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:\ :charset=big5:\ :xmodifiers="@im=gcin": #Set gcin as the XIM Input Server
超级用户可以选择配置系统中的所有用户进行本地化。在 /etc/login.conf 文件中,可以使用以下变量来设置区域设置和 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:
请参阅 login.conf(5) 以获取有关这些变量的更多详细信息。请注意,它已经包含了预定义的_russian_类。
每当编辑 /etc/login.conf 文件时,请记得执行以下命令来更新能力数据库:
# cap_mkdb /etc/login.conf
对于最终用户来说,需要在他们的 |
25.2.1.1.1. 更改登录类别的实用工具
除了手动编辑 /etc/login.conf 文件外,还有一些工具可用于设置新创建用户的区域设置。
使用 vipw
添加新用户时,需要指定 language 来设置区域设置:
user:password:1111:11:language:0:0:User Name:/home/user:/bin/sh
当使用 adduser
命令添加新用户时,可以预先配置默认语言适用于所有新用户,或者为单个用户指定语言。
如果所有新用户使用相同的语言,请在 /etc/adduser.conf 中设置 defaultclass =language
。
要在创建用户时覆盖此设置,请在此提示处输入所需的区域设置:
Enter login class: default []:
或者在调用 adduser
时指定要设置的区域设置:
# adduser -class language
如果使用 pw
来添加新用户,请按照以下方式指定区域设置:
# pw useradd user_name -L language
要更改现有用户的登录类别,可以使用 chpass
命令。以超级用户身份调用该命令,并将要编辑的用户名作为参数提供。
# chpass user_name
25.2.1.2. Shell 启动文件方法
不推荐使用第二种方法,因为每个使用的 shell 都需要手动配置,每个 shell 都有不同的配置文件和语法。例如,要为 sh
shell 设置德语语言,可以将以下行添加到 .filename
文件中的 ` ~ /.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
shell ,配置文件的名称和使用的语法有所不同。以下是与 [.filename]# ~ /.login# 、 /etc/csh.login 或 /usr/share/skel/dot.login 等效的设置:
setenv LANG de_DE.ISO8859-1 setenv MM_CHARSET ISO-8859-1
为了使事情变得复杂,配置 Xorg 所需的语法也取决于 shell 。第一个示例适用于 sh
shell ,第二个示例适用于 csh
shell :
LANG=de_DE.ISO8859-1; export LANG
setenv LANG de_DE.ISO8859-1
25.2.2. 控制台设置
控制台提供了几种本地化字体。要查看可用字体的列表,请键入 ls /usr/share/syscons/fonts
。要配置控制台字体,请在 /etc/rc.conf
中指定字体名称,不包括 .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 后缀。通常需要具有相应映射字体的屏幕映射作为解决方案,以便将位 8 扩展到 VGA 适配器的字体字符矩阵的位 9 ,以便在屏幕字体使用位 8 列时将字母移出伪图形区域。
要查看可用的键盘映射列表,请输入 ls /usr/share/syscons/keymaps
。在指定 keymap_name 时,不要包括 .kbd 后缀。要在不重新启动的情况下测试键盘映射,请使用 kbdmap(1) 。
通常需要使用 keychange
条目来将功能键编程为与所选终端类型匹配,因为功能键序列无法在键映射中定义。
接下来,在所有虚拟终端条目的 /etc/ttys 中设置正确的控制台终端类型。 字符集的终端类型定义 总结了可用的终端类型。
字符集 | 终端类型 |
---|---|
ISO8859-1 or ISO8859-15 |
|
ISO8859-2 |
|
ISO8859-7 |
|
KOI8-R |
|
KOI8-U |
|
CP437 (VGA default) |
|
US-ASCII |
|
对于具有宽字符或多字节字符的语言,请从 FreeBSD Ports Collection 中安装适用于该语言的控制台。可用的端口在 从 Ports Collection 可用的控制台 中进行了总结。安装完成后,请参考端口的 pkg-message 或 man 页面以获取配置和使用说明。
语言 | 端口位置 |
---|---|
繁体中文( BIG-5 ) |
包: chinese/big5con[] |
中文 / 日文 / 韩文 |
包: chinese/cce[] |
中文 / 日文 / 韩文 |
包: chinese/zhcon[] |
日本人 |
包: chinese/kon2[] |
日本人 |
包:日语 /kon2-14 点 [] |
日本人 |
包: japanese/kon2-16dot[] |
如果在 [/etc/rc.conf] 中启用了鼠标,可能需要进行额外的配置。默认情况下, syscons(4) 驱动程序的鼠标光标占用字符集中的 0xd0
-0xd3
范围。如果语言使用此范围,请通过在 [/etc/rc.conf] 中添加以下行来移动光标的范围:
mousechar_start=3
25.2.3. Xorg 设置
描述了如何安装和配置 Xorg 。在配置 Xorg 进行本地化时,可以从 FreeBSD Ports Collection 中获取额外的字体和输入法。应用程序特定的国际化设置,如字体和菜单,可以在 [.filename]# ~ /.Xresources# 中进行调整,这样用户就可以在图形应用程序菜单中查看他们选择的语言。
X 输入法( XIM )协议是用于输入非英语字符的 Xorg 标准。 可用的输入方法 总结了在 FreeBSD Ports Collection 中可用的输入法应用程序。还有其他 Fcitx 和 Uim 应用程序可用。
语言 | 输入法 |
---|---|
中文 |
包: 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[] |
日本人 |
包:日语 /ibus-skk[] |
日本人 |
|
日本人 |
|
日本人 |
包: japanese/scim-anthy[] |
日本人 |
包: japanese/scim-canna[] |
日本人 |
包: japanese/scim-honoka[] |
日本人 |
包: japanese/scim-honoka-plugin-romkan[] |
日本人 |
包: japanese/scim-honoka-plugin-wnn[] |
日本人 |
包: japanese/scim-prime[] |
日本人 |
|
日本人 |
|
日本人 |
包: japanese/scim-tomoe[] |
日本人 |
包: japanese/scim-uim[] |
日本人 |
|
日本人 |
|
日本人 |
包: japanese/uim-anthy[] |
韩国人 |
|
韩国人 |
|
韩国人 |
包:韩国 / 纳比 [] |
韩国人 |
|
韩国人 |
|
越南语 |
|
越南语 |
25.3. 寻找国际化应用程序
国际化( i18n )应用程序是使用库中的国际化工具包进行编程的。这些工具包允许开发人员编写一个简单的文件,并将显示的菜单和文本翻译成每种语言。
链接: FreeBSD Ports Collection 包含许多应用程序,这些应用程序内置了对多种语言的宽字符或多字节字符的支持。这些应用程序的名称中包含“ i18n ”,以便于识别。然而,它们并不总是支持所需的语言。
一些应用程序可以使用特定的字符集进行编译。通常在端口的 Makefile 文件中完成,或者通过传递一个值给 configure 来实现。有关如何确定所需的 configure 值或在构建端口时使用哪些编译选项的更多信息,请参阅相应的 FreeBSD 端口源代码中的 i18n 文档。
25.4. 特定语言的区域配置
本节提供了将 FreeBSD 系统本地化为俄语的配置示例。然后,它还提供了一些本地化其他语言的附加资源。
25.4.1. 俄语( KOI8-R 编码)
本节展示了将 FreeBSD 系统本地化为俄语所需的具体设置。有关每种类型设置的更详细描述,请参阅 使用本地化 。
要为登录 shell 设置此区域设置,请将以下行添加到每个用户的 [.filename]# ~ /.login_conf# 文件中:
me:My Account:\ :charset=KOI8-R:\ :lang=ru_RU.KOI8-R:
要配置控制台,请将以下行添加到 [/etc/rc.conf] 文件中:
keymap="ru.utf-8" scrnmap="utf-82cp866" font8x16="cp866b-8x16" font8x14="cp866-8x14" font8x8="cp866-8x8" mousechar_start=3
对于 [/etc/ttys] 中的每个 ttyv
条目,请使用 cons25r
作为终端类型。
要配置打印,需要一个特殊的输出过滤器,将 KOI8-R 转换为 CP866 ,因为大多数带有俄语字符的打印机都配备了硬件代码页 CP866 。 FreeBSD 包含了一个默认的过滤器,位于 [/usr/libexec/lpr/ru/koi2alt] 。要使用这个过滤器,将以下条目添加到 [/etc/printcap] 中:
lp|Russian local line printer:\ :sh:of=/usr/libexec/lpr/ru/koi2alt:\ :lp=/dev/lpt0:sd=/var/spool/output/lpd:lf=/var/log/lpd-errs:
请参考 printcap(5) 以获取更详细的解释。
要在挂载的 MS-DOS® 文件系统中配置对俄语文件名的支持,请在向 [/etc/fstab] 添加条目时包括 -L
和区域设置名称:
/dev/ad0s2 /dos/c msdos rw,-Lru_RU.KOI8-R 0 0
请参考 mount_msdosfs(8) 获取更多详细信息。
要为 Xorg 配置俄文字体,请安装包: x11-fonts/xorg-fonts-cyrillic[] 。然后,在 /etc/X11/xorg.conf 中检查 "Files"
部分。以下行必须在任何其他 FontPath
条目之前添加:
FontPath "/usr/local/lib/X11/fonts/cyrillic"
在 Ports Collection 中提供了额外的西里尔字体。
要激活俄语键盘,请将以下内容添加到 /etc/xorg.conf 文件的 "Keyboard"
部分:
Option "XkbLayout" "us,ru" Option "XkbOptions" "grp:toggle"
确保在该文件中将 XkbDisable
注释掉。
对于 grp:toggle
,使用 右 Alt ;对于 grp:ctrl_shift_toggle
,使用 Ctrl+Shift ;对于 grp:caps_toggle
,使用 CapsLock 。在 LAT 模式下,仍然可以使用旧的 CapsLock 功能,使用 Shift+CapsLock 。由于某种未知的原因, grp:caps_toggle
在 Xorg 中无法正常工作。
如果键盘上有"Windows®"键,并且一些非字母键映射不正确,请将以下行添加到 /etc/xorg.conf 文件中:
Option "XkbVariant" ",winkeys"
俄罗斯的 XKB 键盘可能无法与非本地化的应用程序配合使用。最低程度的本地化应用程序应在程序早期调用 `XtSetLanguageProc(NULL , NULL , NULL) ; ` 函数。 |
请参考 http://koi8.pp.ru/xwin.html 获取有关本地化 Xorg 应用程序的更多说明。有关 KOI8-R 编码的更一般信息,请参考 http://koi8.pp.ru/ 。
25.4.2. 其他语言特定资源
本节列出了一些配置其他区域设置的附加资源。
- 繁體中文(台灣)
-
FreeBSD-Taiwan 项目在 http://netlab.cse.yzu.edu.tw/ \~ statue/freebsd/zh-tut/ 上提供了一份关于 FreeBSD 的中文 HOWTO 文档。
- 希腊语本地化
-
有关 FreeBSD 中希腊语支持的完整文章可以在此处找到: https://www.FreeBSD.org/doc/gr/articles/greek-language-support/ ,该文章仅以希腊语提供,并作为官方 FreeBSD 希腊文档的一部分。
- 日本语和韩国语本地化
-
对于日语,请参考 http://www.jp.FreeBSD.org/ ,对于韩语,请参考 http://www.kr.FreeBSD.org/ 。
- 非英语的 FreeBSD 文档
-
一些 FreeBSD 的贡献者已经将 FreeBSD 文档的部分内容翻译成其他语言。这些翻译可以通过 [FreeBSD 网站](https://www.FreeBSD.org/) 上的链接或者在
/usr/share/doc
目录中找到。
上次修改时间: September 18, 2024 by fiercex