I18N不是FreeBSD特有的,它是一个规则。我们鼓励您帮助FreeBSD完善这一规则。
本地化设置需要具备三个条件:语言代码 (Language Code)、 国家代码 (Country Code) 和编码(Encoding)。 本地名字可以用下面这些部分来构造:
为了用特殊的语言来对FreeBSD系统进行本地化(或其他类UNIX®系统), 用户必须要知道相应的国家和语言代码(国家代码告诉应用程序使用哪一种语言规范)。 此外,WEB浏览器,SMTP/POP服务器,web服务器等都是以这个为基础的。下面就是一个国家和语言代码的例子:
语言/国家代码 | 描述 |
---|---|
en_US | 美国英语 |
ru_RU | 俄语 |
zh_CN | 简体中文 |
一些语言不使用 ASCII 编码,它们使用8-位, 宽或多字节的字符, 更多的信息请参考 multibyte(3)。 比较老的应用程序可能会无法识别它们, 并误认为是控制字符。 比较新的应用程序通常会认出 8-位字符。 随实现的不同, 用户可能不得不将宽或多字节字符支持编入应用程序, 或进行一些额外的配置, 才能够正常使用它们。 要输入和处理宽或多字节字符, FreeBSD Ports Collection 已经为每种语言提供了不同的程序。 请参考各个 FreeBSD Port 中的 I18N 文档。
特别需要指出的是, 用户可能需要查看应用程序的文档, 以确定如何正确地配置它, 或需要为 configure/Makefile/编译器 指定什么样的参数。
记住下面这些:
特定语言的简单C字符集 (参见 multibyte(3)),例如 ISO8859-1, ISO8859-15, KOI8-R, CP437。
宽字节或多字节编码,如EUC, Big5。
您可以在IANA Registry检查一下现行的字符集列表。
与此不同的是, FreeBSD 使用与 X11-兼容的本地编码模式。
通常只要在登入shell里面设置LANG
为本地化,
一般通过设置用户的 ~/.login_conf
或用户shell的启动文件(~/.profile
,~/.bashrc
,
~/.cshrc
)。没有必要设置
LC_CTYPE
,LC_CTIME
。
更多的信息请参考特定语言的FreeBSD文档。
您应当在您的配置文件中设置下面两个变量:
这包括用户的shell配置,特定的应用配置和X11配置。
有两种方法来设置本地化,接下来都会描述。 第一种 (推荐) 就是在 登入分类里面指定环境变量。 第二种方法是把环境变量加到shell的启动文件里面。
这种方法允许把本地化名称和MIME字符集的环境变量赋给可能的shell, 而不是加到每个特定shell的启动文件里面。 用户级设置 Level Setup 允许普通用户自己完成这个设置,而管理员级设置需要超级用户权限。
这有一个设置用户根目录文件.login_conf
的小例子,
它为上述两个变量设置了Latin-1编码。
这是一个为.login_conf
设置繁体中文的BIG-5编码的例子。应该设置下面的大部分变量,
因为很多软件都没有为中文,日文和韩文设置正确的本地化变量。
更多的信息参考管理员级设置和login.conf(5)
检查用户的登入分类在
/etc/login.conf
里面是否设置了正确的语言。主要确定下面的几个设置:
再次使用前面的Latin-1编码的例子:
在修改用户的登入类型之前, 应首先执行下面的命令:
以便使在
/etc/login.conf
中新增的配置生效。
使用vipw
添加新用户,看起来像下面这样:
用adduser
添加新用户看起来像下面这样:
在/etc/adduser.conf
里面设置defaultclass =
语言
。应该记住,您必须为使用其它语言的所有用户设置
缺省
类别。
每一次使用adduser(8)的时候,一个特定语言的可选择性回答会像下面这样给出:
如果您打算给每一个用户使用另外一种语言,您应该这样:
如果您使用pw(8)来添加新用户,应该这样使用:
不推荐使用这种方法,因为它需要给每一个可能的shell程序一个不同的启动文件。 应该用登入分类方法来代替这种方法。
为了设置本地化名称和MIME字符集,只要在/etc/profile
或
/etc/csh.login
启动文件里面设置这两个变量。下面我们使用德语做例子:
在/etc/profile
里面:
或在/etc/csh.login
里面:
另外,您可以把上面的设置添加到/usr/share/skel/dot.profile
(和前面的/etc/profile
一样),或者/usr/share/skel/dot.login
(和前面的/etc/csh.login
一样)。
对于X11:
在$HOME/.xinitrc
里面:
或者:
依赖您的shell(看上面)。
对于所有的简单C字符集,在/etc/rc.conf
中用正在讨论的语言设置正确的控制台字符:
这儿的font_name
来自于/usr/share/syscons/fonts
目录,
不带.fnt
后缀。
如果需要的话, 还应通过
sysinstall
来配置与单字节 C
字符集对应的 keymap 和 screenmap。
在 sysinstall 中,
选择 之后选择
即可进行配置。
除此之外, 您也可以在 /etc/rc.conf
中加入类似下面的配置:
这儿的screenmap_name
是来自/usr/share/syscons/scrnmaps
目录,
不带.scm
后缀。 一个带影射字体的屏幕布局通常被作为一个工作区,
用来在VGA适配器字体矩阵上扩展8位到9位。 如果屏幕字体是使用一个8位的排列,要移动这些字母离开这些区域。
如果您在/etc/rc.conf
里面启用了moused daemon:
那么需要在下一段检查鼠标指针信息。
默认情况下, syscons(4)驱动程序的鼠标指针在字符集中占用0xd0-0xd3的范围。
如果您的语言使用这个范围,您必须把指针范围移出这个范围。
要绕过这个问题, 需要在
/etc/rc.conf
中加入:
这里, keymap_name
来自于 /usr/share/syscons/keymaps
目录,
但去掉了 .kbd
后缀。
如果不确定应该使用哪一个键盘布局, 则可以使用 kbdmap(1)
来测试, 而无需反复重启。
通常, keychange
是设定功能键时,
匹配选定的终端类型来说是必需的, 因为功能键序列无法在键盘布局中定义。
此外您还应该检查并确认在
/etc/ttys
中已经为所有的 ttyv*
项配置了正确的终端类型。 目前, 相关的默认定义是:
字符集设置 | 终端类型 |
---|---|
ISO8859-1 or ISO8859-15 | cons25l1 |
ISO8859-2 | cons25l2 |
ISO8859-7 | cons25l7 |
KOI8-R | cons25r |
KOI8-U | cons25u |
CP437 (VGA default) | cons25 |
US-ASCII | cons25w |
对于多字节字符语言,可以您的在
/usr/ports/language
目录中使用正确的FreeBSD port。一些port以控制台出现,
而系统把它作为串行vtty终端,因此, 必须为 X11
和伪串行控制台准备足够的vtty终端。
下面是在控制台中使用其他语言的应用程序的部分列表:
语言 | 特定区域 |
---|---|
Traditional Chinese (BIG-5) | chinese/big5con |
Japanese | japanese/kon2-16dot or japanese/mule-freewnn |
Korean | korean/han |
虽然X11不是FreeBSD计划的一部分, 但我们已经为FreeBSD用户包含了一些信息。 具体细节可以参考Xorg Web 站点 或是您使用的 X11 Server 的网站。
在~/.Xresources
里面,您可以适当调整特定应用程序的I18N设置(如字体,菜单等)。
安装 Xorg 服务器 (x11-servers/xorg-server), 然后安装对应语言的 TrueType® 字体。 请设置正确的地区信息, 这将让您能够在菜单和其它地方看到所选择的语言。
一些简单的C字符集通常是用硬编码来编码进打印机的。更宽或多位的字符集需要特定的设置, 我们推荐使用apsfilter。您也可以使用特定语言转换器把文档转换为 PostScript®或PDF格式。
FreeBSD 的快速文件系统 (FFS) 是完全支持 8-位 字符的, 因此它可以被用于任何简单的 C 字符集 (参见 multibyte(3)), 但在文件系统中不会保存字符集的名字; 也就是说, 它不加修改地保存 8-位信息, 而并不知道如何编码。 正式说来, FFS 目前还不支持任何形式的宽或多字节字符集。 不过, 某些宽或多字符集提供了独立的针对 FFS 的补丁来帮助启用关于它们的支持。 目前这些要么是无法移植的, 要么过于粗糙, 因此我们不打算把它们加入到源代码中。 请参考相关语言的 Web 站点, 以了解关于这些补丁的进一步情况。
FreeBSD MS-DOS®已经能够配置成用在MS-DOS®上,Unicode字符集和可选的FreeBSD文件系统字符集的更多信息, 请参考 mount_msdosfs(8) 联机手册。
本文档和其它文档可从这里下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
如果对于FreeBSD有问题,请先阅读
文档,如不能解决再联系
<questions@FreeBSD.org>.
关于本文档的问题请发信联系
<doc@FreeBSD.org>.