主机宝贝 建站教程 【Debian参考手册】第 8 章 国际化和本地化

【Debian参考手册】第 8 章 国际化和本地化

目录

8.1. 语言环境
8.1.1. UTF-8 语言环境的基本原理
8.1.2. 语言环境的重新配置
8.1.3. 文件名编码
8.1.4. 本地化信息和翻译文档
8.1.5. 语言环境的影响
8.2. 键盘输入
8.2.1. Linux 控制台和 X 窗口的键盘输入
8.2.2. Wayland 键盘输入
8.2.3. IBus 支持的输入法
8.2.4. 一个日语的例子
8.3. 显示输出
8.4. 东亚环境下宽度有歧义的字符

一个应用软件的 多语言化 (M17N)或本地语言支持,通过 2 个步骤完成。

  • 国际化 (I18N): 使一个软件能够处理多个语言环境。

  • 本地化 (L10N):使一个软件处理一个特定的语言环境。

提示

在 multilingualizatiON(多语言化)、internationalization(国际化)和 localization(本地化)中,有17, 18, 或 10 个字母在”m” 和 “n”, “i” 和 “n”, 或 “l” 和 “n”中间,它们相应表示为 M17N, I18N 和 L10N。细节参见 i18n 介绍 。

8.1. 语言环境

程序支持国际化的行为,是通过配置环境变量 “$LANG“来支持本地化。语言环境的实际支持,依赖 libc 库提供的特性,并要求安装 localeslocales-all 软件包。 locales 软件包需要被适当的初始化。

如果 localeslocales-all 软件包均没有安装,支持语言环境的特性丢失,系统使用 US 英语消息,并按 ASCII 处理数据。这个行为和 “$LANG” 被设置为 “LANG=“、”LANG=C” 或 “LANG=POSIX” 相同。

GNOME 和 KDE 等现代软件是多语言的。他们通过处理 UTF-8 数据来实现国际化,并通过 gettext(1) 架构提供翻译信息来本地化。翻译信息可以由独立的本地化软件包来提供。

目前的 debian 桌面 GUI(图形用户界面)系统通常在 GUI 环境中设置语言环境为 “LANG=xx_YY.UTF-8“。这里,”xx” 是 ISO 639 语言代码 ,”YY” 是 ISO 3166 国家地区代码。这些值由配置桌面的 GUI 对话框来设置,并改变程序的行为。参见 第 1.5.2 节 ““$LANG”变量”

8.1.1. UTF-8 语言环境的基本原理

最简单的文本数据表达是 ASCII,它对英语是足够的,少于 127 个字符(使用 7 位描述)。

即使纯英文文本也可能包含非 ASCII 字符,例如微微卷曲的左右引号在 ASCII 中是不可用的。

为了支持更多字符,许多字符集和编码系统被用来支持多语言。(参见 表 11.2 “编码值和用法的列表”)。

Unicode 字符集可以用 21 位码点范围来显示几乎所有人类已知的字符(例如,十六进制的 0 到 10FFFF)。

文本编码系统 UTF-8 将 Unicode 码点适配到一个合理的 8 位数据流,并大部分兼容 ASCII 数据处理系统。这个使 UTF-8 作为现代推荐的选择。UTF 表示 Unicode 转换格式(Unicode Transformation Format)。当 ASCII 纯文本数据转换为 UTF-8 数据,它有和原始 ASCII 完全一样的内容和大小。所以配置 UTF-8 语言环境不会有任何丢失。

在 UTF-8 语言环境下兼容的应用程序,你可以显示和编辑外语文本数据,在所要求的字体和输入法安装和启用后。例如在”LANG=fr_FR.UTF-8“语言环境下,gedit(1) (GNOME 桌面的文本编辑器) 能够显示和编辑中文字符文本数据,而显示的菜单是法语。

提示

新标准的 “en_US.UTF-8“和老标准的”C“/”POSIX“语言环境都使用标准的 US 英文消息,它们在排序等方面有细微的不同。在维护老的”C“本地行为时,如果你不仅想处理 ASCII 字符,同时还想优雅的处理 UTF-8 编码的字符,在 Debian 上使用非标准的 “C.UTF-8“语言环境。

注意

一些程序在支持 I8N 后会消耗更多的内存。这是因为它们为了速度优化,而在内部使用 UTF-32(UCS4) 来支持 Unicode,并且每个独立于语言环境所选的 ASCII 字符数据都会消耗 4 个字节。再一次地,使用 UTF-8 语言环境并不会使你损失什么。

8.1.2. 语言环境的重新配置

为了让系统访问某一语言环境,语言环境数据必须从语言环境数据库中编译。

locales 软件包 没有 包含预先编译的语言环境数据。你需要按下面的方法配置:

该过程包含 2 个步骤。

  1. 选择所有需要的语言环境数据编译为二进制形式。(请确认至少包含一个 UTF-8 语言环境 )

  2. 通过创建 “/etc/default/locale” 来设置系统默认的语言环境值给 PAM 使用(参见 第 4.5 节 “PAM 和 NSS”)。

设置在 “/etc/default/locale” 里的系统范围的默认语言环境,可以被 GUI(图形用户界面)应用程序的 GUI 配置覆盖。

注意

所使用的确切传统编码系统可以通过 “/usr/share/i18n/SUPPORTED” 来确认。因此, “LANG=en_US” 是 “LANG=en_US.ISO-8859-1“。

locales-all 软件包有所有预编译的语言环境数据,但是不创建”/etc/default/locale“。

8.1.3. 文件名编码

对于跨平台的数据交换(参见 第 10.1.7 节 “可移动存储设备”),你需要使用特殊的编码挂载文件系统.举个例子,不使用选项时,mount(8) 假设 vfat 文件系统 使用 CP437. 你需要给文件名提供明确的挂载选项来使用UTF-8 或 CP932.

注意

在 GNOME 这类的现代桌面环境下,当自动挂载一个热拔插 U 盘时,你可以提供这样的挂载选项。右击桌面上的图标,点击 “Drive” , “Setting”, 输入 “utf8” 到 “Mount options:”. 当这个 U 盘下次挂载时,UTF-8 就可以了。

注意

如果你在升级一个系统,或者从老的非 UTF-8 系统迁移磁盘,非 ASCII 字符的文件名也许是使用老旧的 ISO-8859-1 或 eucJP 来编码. 请寻求文本转换工具把他们转换到 UTF-8. 参见 第 11.1 节 “文本数据转换工具”.

在默认情况下,Samba 对新的客户端(Windows NT, 200x, XP)使用 Unicode,但对老的客户端(DOS 和 Windows 9x/Me)使用 CP850.可以在 “/etc/samba/smb.conf” 文件里面,使用”dos charset” 来改变老客户端的这个默认编码。比如说,CP932 表示为日语。

8.1.4. 本地化信息和翻译文档

在 Debian 系统中显示的许多文档和文本信息有翻译存在,比如错误信息、标准程序输出、菜单和手册页。GNU gettext(1) 命令工具链是大部分翻译活动的后端工具。

aptitude(8) 里,”Tasks” → “Localization” 提供一个有用的二进制包扩展列表, 给应用程序增加本地化信息和提供翻译文档。

举个例子,你可以安装 manpages-LANG 包来获得本地化 man 手册页信息。从 “/usr/share/man/it/” 来读取 programname 意大利语的 man 手册页 ,执行下面的操作。

通过 $LANGUAGE 环境变量,GNU gettext 能够适应翻译语言的优先级列表。例如:

获取更多信息,参见 info gettext ,阅读 “The LANGUAGE variable” 章节。

8.1.5. 语言环境的影响

sort(1) 的字符排序,受 语言环境的影响. 西班牙语和英语语言环境排序是不一样的。

ls(1) 的日期格式受语言环境影响. “LANG=C ls -l” 和 “LANG=en_US.UTF-8” 的日期格式是不一样的(参见 第 9.3.4 节 “定制时间和日期的显示”).

不同语言环境的数字标点不一样.比如说,英语语言环境中, 一千点一显示为 “1,000.1“,而在德语语言环境中,它显示为 “1.000,1“. 你可以在电子表格程序里面看到这个不同。

$LANG” 环境变量的每一个细节特征能够通过设置 “$LC_*” 变量来覆盖。这些环境变量又能够通过设置 $LC_ALL“变量而被再次覆盖。细节参见 locale(7) man 手册页。除非你有强烈的理由创建复杂的配置,请远离他们并只使用 “$LANG” 变量来设置一个 UTF-8 语言环境。

8.2. 键盘输入

8.2.1. Linux 控制台和 X 窗口的键盘输入

Debian 系统可以使用 keyboard-configurationconsole-setup 软件包配置多个国际化键盘布局。

对于 Linux 控制台和 X 窗口系统,这将更新在 “/etc/default/keyboard” 和 “/etc/default/console-setup” 里的配置参数。这个也会配置 Linux 控制台字体。许多非 ASCII 字符,包括许多欧洲语言使用的重音字符,可以使用 死键、AltGr 键 和 组合键 来输入它们。

8.2.2. Wayland 键盘输入

Wayland 桌面系统上的 GNOME, 第 8.2.1 节 “Linux 控制台和 X 窗口的键盘输入” 不支持非英语的欧洲语言。IBus 不仅支持亚洲语言,也支持欧洲语言。GNOME 桌面环境的软件包依赖关系通过”gnome-shell“推荐”ibus” 。”ibus” 的代码已经更新集成 setxkbmap 和 XKB 选项功能。对多语言键盘输入,你需要从 “GNOME Settings” 或 “GNOME Tweaks” 配置 ibus

注意

如果 ibus 激活,即使在基于传统的 X 的桌面环境下,通过 setxkbmap 配置的传统的 X 键盘,也会被 ibus 覆盖。你能够禁用安装的 ibus,使用 im-config 设置输入法为”None”。更多信息,参见 Debian 维基:键盘。

8.2.3. IBus 支持的输入法

因 GNOME 桌面环境通过”gnome-shell” 推荐”ibus“,”ibus“对于输入法来说,是一个好的选择。

输入多种语言到应用程序的处理流程如下:

下面是 IBus 和它的引擎软件包列表。

表 8.1. IBus 和它的引擎软件包列表

软件包 流行度 大小 支持的语言环境
ibus V:142, I:185 1598 使用 dbus 的输入方式框架
ibus-mozc V:1, I:3 1008 日文
ibus-anthy V:0, I:1 8825 同上
ibus-kkc V:0, I:0 214 同上
ibus-skk V:0, I:0 244 同上
ibus-libpinyin V:0, I:2 2524 中文(zh_CN)
ibus-chewing V:0, I:0 422 中文 (zh_TW)
ibus-hangul V:0, I:2 288 韩文
ibus-table V:0, I:1 2009 IBus 表引擎
ibus-table-thai I:0 47 泰文
ibus-unikey V:0, I:0 318 越南语
ibus-m17n V:0, I:1 207 多语言:印度语、阿拉伯语和其它

注意

对于中文,”fcitx5” 可以是一个替代的输入法框架。对于 Emacs 的狂热爱好者,”uim“可以是一个替代。无论哪种方式,你可能需要用 im-config 做一些额外的手工配置。像 “kinput2“这类老的 输入法 任然在 Debian 仓库中存在,但是不推荐用到现代环境中。

8.2.4. 一个日语的例子

我发现在英语环境(“en_US.UTF-8“)下启动日文输入法非常有用. 下面是在 Wayland 上的 GNOME下使用 IBus 的做法:

  1. 安装日文输入法软件包 ibus-mozc(或 ibus-anthy ),以及 im-config 等推荐的软件包。

  2. 选择 “Settings” → “Keyboard” → “Input Sources” → 在”Input Sources”中单击 “+” → “Japanese” → “Japanese mozc (or anthy)”, 然后单击”Add”。如果它没有被激活。

  3. 你可以选择许多输入源。

  4. 重新登录用户账户。

  5. 右键单击 GUI 工具条图标,设置每一个输入源。

  6. 使用 SUPER-SPACE 在安装的输入法之间进行切换. (SUPER 键通常是 Windows 键.)

提示

如果你希望在日本物理键盘(shift-2 按键刻有有一个" 双引号标记 )上访问只有字母表的键盘环境,在上面的过程中选择 “Japanese” 。你能够在物理的“US”键盘(shift-2 按键刻有有一个 @ 标记)上使用”Japanese mozc (或 anthy)”输入日文。

  • im-config(8) 的用户界面菜单入口是 “Input method”。

  • 此外,从用户的 shell 来执行 “im-config” 。

  • 如果命令从 root 账户或 非 root 账号执行,im-config(8) 表现会有所不同。

  • im-config(8) 让最佳的输入法作为系统默认而不需要用户干预。

8.3. 显示输出

Linux 控制台只能显示有限的字符。(你需要使用特殊的终端程序,例如 jfbterm(1),从而在非 GUI 控制台中显示非欧洲语言。)

只要需要的字体安装并被启用,GUI(图形用户界面)环境(第 7 章 GUI(图形用户界面)系统)能够显示任意 UTF-8 字符。(原始字体数据的编码会被处理,并对用户来说是透明的。)

8.4. 东亚环境下宽度有歧义的字符

在东亚语言环境下,方框绘制、希腊字符和西里尔字符可能会显示得比你预期的样子更宽,这样会导致终端输出排列不再整齐(参见 Unicode 标准附录 #11)。

您可以绕过这个问题:

  • gnome-terminal:首选项 → 配置文件 → 配置名 → 兼容性 → 宽度有歧义的字符 → 窄

  • ncurses:设置环境变量 export NCURSES_NO_UTF8_ACS=0

本文来自网络,不代表主机宝贝立场,转载请注明出处:http://www.idcbaby.com/77969/