免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2257 | 回复: 0
打印 上一主题 下一主题

本地化-I18N/L10N使用和设置 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-19 02:52 |只看该作者 |倒序浏览
本地化-I18N/L10N使用和设置
目录
22.1
概述

22.2
基础知识

22.3
使用本地化语言

22.4
编译I18N程序

22.5
本地化FreeBSD
Contributed by Andrey Chernov. Rewritten by Michael C. Wu.
22.1 概述
  FreeBSD是一个由分布于全世界的用户和贡献者支持的项目。这章将讨论FreeBSD的国际化和本地化的问题,允许非英语用户也能使用FreeBSD很好地工作。在系统和应用水平上,主要是通过执行i18N标准来实现的,所以这里我们将为读者提供详细的介绍。
  读完这一章,您将了解到:


  • 不同的语言和地域是如何在现代操作系统上进行编码的。

  • 如何为您的登入shell设置本地化。

  • 如何配置您的控制台为非英语语言。 languages.

  • 如何使用不同的语言来有效地使用X Windows。

  • 在哪里可以找到更多有关开发符合i18N标准的应用程序的信息。

  阅读这章之前,您应当了解:


  • 怎样安装额外的第三方程序(
    第 4 章
    )。

22.2 基础知识
22.2.1 I18N/L10N 是什么?
  开发人员把internationalization简写成I18N,中间的数字是前后两个字母间的字母个数。 L10N依据“localization” 使用同样的命名规则。 I18N/L10N方法、协议和应用结合在一起,允许用户使用他们自己所选择的语言。
  I18N应用程序使用I18N工具来编程。它允许开发人员写一个简单的文件,就可以将显示的菜单和文本翻译成本地语言。我们非常鼓励程序员遵循这种规则。
22.2.2 为什么要使用I18N/L10N?
  I18N/L10N标准能够很好地支持您查看、输入或处理非英语语言。
22.2.3 I18N支持哪些语言?
  I18N和L10N不是FreeBSD特有的。当前,它能支持世界上绝大部分主力语言,包括但不限于:中文,德文,日文,朝鲜文,法文,俄文,越南文等等。

.3 使用本地化语言
  I18N不是FreeBSD特有的,它是一个规则。我们鼓励您帮助FreeBSD完善这一规则。
  本地化设置需要具备三个条件:语言代码 (Language Code)、 国家代码 (Country Code) 和编码(Encoding)。 本地名字可以用下面这些部分来构造:
语言代码_国家代码.编码
22.3.1 语言和国家代码
  为了用特殊的语言来对FreeBSD系统进行本地化(或其他类UNIX®系统),用户必须要知道相应的国家和语言代码(国家代码告诉应用程序使用哪一种语言规范)。此外,WEB浏览器,SMTP/POP服务器,web服务器等都是以这个为基础的。下面就是一个国家和语言代码的例子:
语言/国家代码
描述
en_US
美国英语
ru_RU
俄语
zh_CN
简体中文
22.3.2 编码
  一些语言不使用 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-兼容的本地编码模式。
22.3.3 I18N应用程序
  在FreeBSD Ports和Package系统里面,I18N应用程序已经使用I18N 来命名。然而它们不是总支持需要的语言。
22.3.4 本地化设置
  通常只要在登入shell里面设置LANG为本地化,一般通过设置用户的 ~/.login_conf 或用户shell的启动文件(~/.profile,~/.bashrc, ~/.cshrc)。没有必要设置 LC_CTYPE,LC_CTIME。 更多的信息请参考特定语言的FreeBSD文档。
  您应当在您的配置文件中设置下面两个变量:


  • LANG 为POSIX®设置本地化语言功能。

  • MM_CHARSET应用程序的MIME字符集。

  这包括用户的shell配置,特定的应用配置和X11配置。
22.3.4.1 设置本地化的方法
  有两种方法来设置本地化,接下来都会描述。 第一种 (推荐) 就是在
登入分类
里面指定环境变量。第二种方法是把环境变量加到shell的
启动文件
里面。
22.3.4.1.1 登入分类方法
  这种方法允许把本地化名称和MIME字符集的环境变量赋给可能的shell,而不是加到每个特定shell的启动文件里面。
用户级设置 Level Setup
允许普通用户自己完成这个设置,而
管理员级设置
需要超级用户权限。
22.3.4.1.1.1 用户级设置
  这有一个设置用户根目录文件.login_conf的小例子,它为上述两个变量设置了Latin-1编码。
me:\
    :charset=ISO-8859-1:\
    :lang=de_DE.ISO8859-1:
  这是一个为.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.Big:\
    :setenv=LC_COLLATE=zh_TW.Big5:\
    :setenv=LC_CTYPE=zh_TW.Big5:\
    :setenv=LC_MESSAGES=zh_TW.Big5:\
    :setenv=LC_MONETARY=zh_TW.Big5:\
    :setenv=LC_NUMERIC=zh_TW.Big5:\
    :setenv=LC_TIME=zh_TW.Big5:\
    :charset=big5:\
    :xmodifiers="@im=gcin": #Set gcin as the XIM Input Server
  更多的信息参考
管理员级设置

login.conf(5)
22.3.4.1.1.2 管理员级设置
  检查用户的登入分类在 /etc/login.conf里面是否设置了正确的语言。主要确定下面的几个设置:
language_name:accounts_title:\
    :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:
  在修改用户的登入类型之前, 应首先执行下面的命令:
# cap_mkdb /etc/login.conf
  以便使在 /etc/login.conf 中新增的配置生效。
使用
vipw(8)
改变登入类型。
  使用vipw添加新用户,看起来像下面这样:
user:password:1111:11:language:0:0:User Name:/home/user:/bin/sh

adduser(8)
改变登入类型。
  用adduser添加新用户看起来像下面这样:


  • 在/etc/adduser.conf里面设置defaultclass = 语言。应该记住,您必须为使用其它语言的所有用户设置 缺省类别。

  • 每一次使用
    adduser(8)
    的时候,一个特定语言的可选择性回答会像下面这样给出:
    Enter login class: default []:

  • 如果您打算给每一个用户使用另外一种语言,您应该这样:
    # adduser -class language

使用
pw(8)
改变登入类型。
  如果您使用
pw(8)
来添加新用户,应该这样使用:
# pw useradd user_name -L language
22.3.4.1.2 Shell启动文件方法
注意: 不推荐使用这种方法,因为它需要给每一个可能的shell程序一个不同的启动文件。应该用
登入分类方法
来代替这种方法。
  为了设置本地化名称和MIME字符集,只要在/etc/profile或 /etc/csh.login启动文件里面设置这两个变量。下面我们使用德语做例子:
  在/etc/profile里面:
LANG=de_DE.ISO8859-1; export LANG
MM_CHARSET=ISO-8859-1; export MM_CHARSET
  或在/etc/csh.login里面:
setenv LANG de_DE.ISO8859-1
setenv MM_CHARSET ISO-8859-1
  另外,您可以把上面的设置添加到/usr/share/skel/dot.profile (和前面的/etc/profile一样),或者/usr/share/skel/dot.login (和前面的/etc/csh.login一样)。
  对于X11:
  在$HOME/.xinitrc里面:
LANG=de_DE.ISO8859-1; export LANG
  或者:
setenv LANG de_DE.ISO8859-1
  依赖您的shell(看上面)。
22.3.5 控制台设置
  对于所有的简单C字符集,在/etc/rc.conf中用正在讨论的语言设置正确的控制台字符:
font8x16=font_name
font8x14=font_name
font8x8=font_name
  这儿的font_name来自于/usr/share/syscons/fonts目录, 不带.fnt后缀。
  您还需要确定正确地为您的 C 字符集配置了 keymap 和 screenmap, 这一工作可以通过 sysinstall (在 FreeBSD 5.2 之前的版本是 /stand/sysinstall) 来完成。。 进入 sysinstall 之后, 选择 Configure, Console。 此外,您也可以将下面的设置加入 /etc/rc.conf:
scrnmap=screenmap_name
keymap=keymap_name
keychange="fkey_number sequence"
  这儿的screenmap_name是来自/usr/share/syscons/scrnmaps目录, 不带.scm后缀。 一个带影射字体的屏幕布局通常被作为一个工作区,用来在VGA适配器字体矩阵上扩展8位到9位。如果屏幕字体是使用一个8位的排列,要移动这些字母离开这些区域。
   如果您在/etc/rc.conf里面启用了moused daemon:
moused_enable="YES"
  那么需要在下一段检查鼠标指针信息。
  默认情况下,
syscons(4)
驱动程序的鼠标指针在字符集中占用0xd0-0xd3的范围。如果您的语言使用这个范围,您必须把指针范围移出这个范围。 要绕过这个问题, 需要在 /etc/rc.conf 中加入:
mousechar_start=3
  这里, 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
22.3.6 X11设置
  虽然X11不是FreeBSD计划的一部分, 但我们已经为FreeBSD用户包含了一些信息。具体细节可以参考
Xorg Web 站点
或是您使用的 X11 Server 的网站。
  在~/.Xresources里面,您可以适当调整特定应用程序的I18N设置(如字体,菜单等)。
22.3.6.1 显示字体
  安装 Xorg 服务器 (
x11-servers/xorg-server
) 或 XFree86™ 服务器 (
x11-servers/XFree86-4-Server
), 然后安装对应语言的 TrueType® 字体。 请设置正确的地区信息,这将让您能够在菜单和其它地方看到所选择的语言。
22.3.6.2 输入非英语字符
   X11输入方法(XIM)协议是所有X11客户端的一个新标准。所有将作为XIM客户端来写的X11应用程序从XIM输入服务器输入。不同的语言有几种XIM服务器可用。
22.3.7 打印机设置
  一些简单的C字符集通常是用硬编码来编码进打印机的。更宽或多位的字符集需要特定的设置,我们推荐使用apsfilter。您也可以使用特定语言转换器把文档转换为 PostScript®或PDF格式。
22.3.8 内核和文件系统
  FreeBSD 的快速文件系统 (FFS) 是完全支持 8-位 字符的, 因此它可以被用于任何简单的 C 字符集 (参见
multibyte(3)
),但在文件系统中不会保存字符集的名字; 也就是说, 它不加修改地保存 8-位信息,而并不知道如何编码。 正式说来, FFS 目前还不支持任何形式的宽或多字节字符集。 不过,某些宽或多字符集提供了独立的针对 FFS 的补丁来帮助启用关于它们的支持。目前这些要么是无法移植的, 要么过于粗糙, 因此我们不打算把它们加入到源代码中。请参考相关语言的 Web 站点, 以了解关于这些补丁的进一步情况。
  FreeBSD MS-DOS®已经能够配置成用在MS-DOS上,Unicode字符集和可选的FreeBSD文件系统字符集的更多信息,请参考
mount_msdosfs(8)
联机手册。

.4 编译I18N程序
  许多FreeBSD Ports已经支持I18N了。他们中的一些都用-I18N作标记。这些和其他很多程序已经内建I18N的支持,不需要考虑其他的事项了。
  然而一些像MySQL这样的应用程序需要重新配置字符集,可在 Makefile里面设置,或者直接把参数传递给configure。

.5 本地化FreeBSD
22.5.1 俄语(KOI8-R编码)Originally contributed by Andrey Chernov.
  关于KOI8-R编码的更多信息请查阅
KOI8-R参考(Russian Net Character Set)

22.5.1.1 本地设置
  把下面的行加入到您的~/.login_conf文件:
me:My Account:\
    :charset=KOI8-R:\
    :lang=ru_RU.KOI8-R:
  参看前面的设置
本地化
的例子。
22.5.1.2 控制台设置


  • 把下面一行加到 /etc/rc.conf:
    mousechar_start=3

  • 并在 /etc/rc.conf 里面增加如下设置:
    keymap="ru.koi8-r"
    scrnmap="koi8-r2cp866"
    font8x16="cp866b-8x16"
    font8x14="cp866-8x14"
    font8x8="cp866-8x8"

  • 对于/etc/ttys里面的ttyv*记录,要使用 cons25r作为终端类型。

  参看前面的设置
控制台
的例子。
22.5.1.3 打印机设置
  既然绝大多数带俄语字符的打印机遵循CP866的标准,那么需要一个针对KOI8-R到CP866转换的特定输出过滤器。这样的一个过滤器默认的安装在 /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)
手册页。
22.5.1.4 MS-DOS®文件系统和俄语文件名
  下面的例子是在挂上MS-DOS® 文件系统后,启用对俄语文件名支持的
fstab(5)
记录:
/dev/ad0s2      /dos/c  msdos   rw,-Wkoi2dos,-Lru_RU.KOI8-R 0 0
  选项 -L 用于选择地区名称, 而 -W 则用于设置字符转换表。 要使用 -W 选项, 则一定要首先挂接 /usr, 然后再挂接 MS-DOS 分区, 因为转换表是放在 /usr/libdata/msdosfs 的。 要了解进一步的细节, 请参考
mount_msdosfs(8)
联机手册。
22.5.1.5 X11设置

  • 首先请进行前面介绍的
    非-X 的本地化设置


  • 如果您正使用 Xorg, 请安装
    x11-fonts/xorg-fonts-cyrillic
    package。
    检查您 /etc/X11/xorg.conf 文件中的 "Files" 小节。 下面的行, 应加到任何其它 FontPath 项之前:
    FontPath   "/usr/X11R6/lib/X11/fonts/cyrillic/misc"
    FontPath   "/usr/X11R6/lib/X11/fonts/cyrillic/75dpi"
    FontPath   "/usr/X11R6/lib/X11/fonts/cyrillic/100dpi"
    如果希望使用高分辨率的现实模式, 则应把 100 dpi 的配置行放在 75 dpi 前面。
    注意: 请查看 ports 中的其它西里尔字体。

  • 要激活俄语键盘, 需要在 xorg.conf 文件的 "Keyboard" 小节中加入下列内容:
    Option "XkbLayout"   "us,ru"
    Option "XkbOptions"  "grp:toggle"
    要确信XkbDisable 已经关闭 (注释掉) 了。
    RUS/LAT的切换用CapsLock。老的CapsLock功能可以通过 Shift+CapsLock 来模拟(只有在LAT模式的时候)。
    使用 grp:caps_toggle 时, RUS/LAT 切换键将是 右 Alt, 而使用 grp:ctrl_shift_toggle 则表示切换键是 Ctrl+Shift。 旧的 CapsLock 功能仍可通过 Shift+CapsLock (只对 LAT 模式有效)。 对于 grp:toggle 而言 RUS/LAT 开关则是 Right Alt。由于不明原因, grp:caps_toggle 在 Xorg 中无法使用。
    如果您的键盘上有 “Windows®” 键, 但发现 RUS 模式下, 某些非字母键映射不正常, 则应在您的 xorg.conf 文件中加入下面这行:
    Option "XkbVariant" ",winkeys"
    注意: 俄语的 XKB 键盘可能并不为某些不具备本地化功能的应用程序所支持。
    注意: 本地化程序最低限度应在程序启动时调用 XtSetLanguageProc (NULL, NULL, NULL); 函数。
    参见
    KOI8-R for X Window
    以获得关于对 X11 应用进行本地化的指导。
    22.5.2 设置繁体中文
      FreeBSD-Taiwan计划有一个使用很多中文ports的中文化指南在
    http://netlab.cse.yzu.edu.tw/~statue/freebsd/zh-tut/
    。 目前, FreeBSD 中文化指南 的维护人员是 沈俊兴
    statue@freebsd.sinica.edu.tw
    >。
      沈俊兴
    statue@freebsd.sinica.edu.tw
    > 利用 FreeBSD-Taiwan 的 zh-L10N-tut建立了
    Chinese FreeBSD Collection (CFC)
    。 相关的 packages 和脚本等可以在
    ftp://freebsd.csie.nctu.edu.tw/pub/taiwan/CFC/
    找到。
    22.5.3 德语本地化(适合所有的ISO 8859-1语言)
      Slaven Rezic
    [email=eserte at cs.tu-berlin.de]eserte at cs.tu-berlin.de[/email]
    > 写了一个在FreeBSD机器下如何使用日尔曼语言的德语指南。 这份德语教程可以在
    http://user.cs.tu-berlin.de/~eserte/FreeBSD/doc/umlaute/umlaute.html
    找到。
    22.5.4 日语和韩语本地化
      日语本地化请参考
    http://www.jp.FreeBSD.org/
    ,韩语参考
    http://www.kr.FreeBSD.org/

    22.5.5 非英语的FreeBSD文档
      一些FreeBSD的贡献者已经将部分FreeBSD文档翻译成了其他语言。 可以通过
    主站
    或者 /usr/share/doc 查到。


    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/23879/showart_384956.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP