8.1. 用其他语言进行配置
如果你在法语环境下安装了系统,那么默认语言可能会被设置为法语。所以你最好知道你的安装器使用的是什么语言。如果对语言有要求而又设置错误了,你可以自己进行修改。
工具 locale
命令显示当前配置
locale
命令会列出当前配置的语言环境参数(比如日期格式,数字格式),以一组标准环境变量表格的形式呈现当前的语言环境变量配置。
8.1.1. 设置默认语言
一个 locale 指一系列的区域设置。它不仅包括对文字语言的设置,也包括数字格式显示、日期、时间和货币,以及“按字母顺序排列规则”(正确地处理重音字符)。虽然这些参数可以被独立配置,我们仍建议您使用 locale 这个从地区形式最大化匹配一连贯参数的工具。这些 locales 一般以以下格式 *语言代码*_*城市代码*
,有时后缀也在指定字符集和编码中被使用。这是考虑到同一语言在不同区域之间使用习惯和印刷差异。
文化 字符集
历史上看,每一个 locale 都有一个相关联的字符集(一组已知的字符集)和一个特定的编码(为计算机内部的字符表达)。
最广泛使用的字符编码是基于拉丁字母、使用单个 byte 表达一个字符,被限制为最多256个字符。256个字符不足以覆盖所有欧洲语言,因此多编码系统非常有必要,这就是为何我们将 ISO-8859-1 (即“Latin 1”)升级为 ISO-8859-15 (即“Latin 9”),等等。
包含外国语言的工作状态隐含着字符集和字符设置的切换。此外一个几乎无法解决的问题,如何编写一个多语言文档? Unicode(一个几乎包括世界所有书写系统的超目录)被创建用于解决该问题。其中一个 Unicode 编码, UTF-8 ,保留了全部128个 ASCII 符号(7位代码),还以不同的方式处理了其他字符。它们通过前面几个位的特定转义序列,隐式定义了字符的长度。它们允许在一个或者多个字节序列使用所有的 Unicode 字符。因为它是 XML 文件的默认编码而被广泛推广。
它是最广泛使用的编码,也是 Debian 发行版系统的默认选项。
locales 包括所有应用“本土化”所需要的所有元素。安装过程中,该包将要求使用者选择一系列支持语言。该选择能在使用root帐号运行 dpkg-reconfigure locales
改变。
第一个让您回答的问题是选哪些“ locales ”来支持。选择所有英语国家(所有以en_
开始的环境)是一种可能。如果主机上有外国用户,打开对应的语言环境支持不要犹豫。所有在本系统被打开支持的语言环境存储在 /etc/locale.gen
。它可以被手动编辑,但需要在你做任何改动后运行 locale-gen
使改动生效。该命令将创建新添加的语言环境及其关联文件并移除过期的文件。
第二个问题,标题 “系统环境的默认字符环境”请求设置默认的字符系统。该选择在美国是 en_US.UTF-8
,英式发音者更习惯于 en_GB.UTF-8
,加拿大人喜欢 en_CA.UTF-8
或者对于法国人来说 fr_CA.UTF-8
。/etc/default/locale
文件会保存这个变更。该设置将由 PAM 系统写入到所有登录用户会话的 LANG
环境变量。
The locales-all package contains the precompiled locale data for all supported locales.
幕后/etc/environment
和 /etc/default/locale
/etc/environment
文件为 login
、 gdm
、 ssh
程序提供正确的环境变量。
这些应用不直接创建这些变量,而通过 PAM 系统的 pam_env.so
模块。PAM(插入式验证模块)是一个提供身份验证、会话初始化和密码管理的模块库。第 11.7.3.2 节 “Configuring PAM” 是一个 PAM 配置样式。
/etc/default/locale
文件的工作方式非常简单,仅包含 LANG
环境变量。得益于这种分开的配置,一些 PAM 用户可以在没有本地化设置的情况下继承一个完整环境。事实上,并不鼓励服务器程序启用本地化;从另外一方面来讲,使用用户会话的程序建议打开本地化和语言设置。
8.1.2. 键盘配置
甚至如果键盘布局在终端和图形模式中被设置成不同, Debian 也提供了一个简单的配置让它们两个工作:它基于 debconf 并由keyboard-configuration 包实现。使用 dpkg-reconfigure keyboard-configuration
命令来重新设置键盘布局。
有关物理键盘布局(一个标准 US 键盘是 “Generic 104 key” )的解决方式,布局选择一般的 US, AltGr 键则定位到右 Alt。最后一个,允许使用组合摁键输入特殊字符的快捷键 Compose 键,先后使用 Compose ‘ e产生一个 e-acute(“é”)。这些组合在 /usr/share/X11/locale/en_US.UTF-8/Compose
中被定义(或者其他文件,可由 /usr/share/X11/locale/compose.dir
说明)。
Note that the keyboard configuration for graphical mode described here only affects the default layout; the GNOME and KDE Plasma environments, among others, provide a keyboard control panel in their preferences allowing each user to have their own configuration. Some additional options regarding the behavior of some particular keys are also available in these control panels.
8.1.3. 迁移到 UTF-8
尽管它去除字符上的任何限制使之在文档使用上没有任何问题,促进了国际化交换 ,但是总体上 UTF-8 编码作为一个期待已久的解决方案在互通上困难重重。其中一个弊病是它必须经历一个相当困难的过度过程。它并不能做到完全透明(这是说,它无法做到整个世界同时切换),需要两个转换操作:一个是在文件内容,一个在文件名。幸运的是大部分工作已经完成了,在更很大程度上我们讨论它作为一种参考。
文化 乱码以及谬误
当一个文本发送(或者接收)但是却没有携带编码信息,接收者并不是常常能确切地知道如何去确定一组字节的含义。你通常能通过对文本进行统计获得一些帮助,但是并不是总得到一个确切的答案。当编码系统选择了不同于写入文件时使用的编码时,字节就被曲解了,当你获取它时,最好的结果是一些字符错了,最坏的结果,一些变得完全无法识别了。
因此,如果一个法文文本其他字符都显示正常,但是重音字母却被像 “é” or è” or “ç” 这样的字符取代,那么很有可能这个文件使用的编码是 UTF-8 但系统解释的时候用的是 ISO-8859-1 或者 ISO-8859-15 编码。很有可能你的本地语言环境没有转换到 UTF-8;相反,如果你看到的是一连串的问号,即使这些问号看上去像是被重音字母取代,很有可能你的本地语言系统确实配置了UTF-8,但是您获取到的是一个西方 ISO 格式编码的文档。
一些“简单”的例子。这些例子限定在西方文化下,Unicode(以及 UTF-8)的设计最大兼容基于拉丁语系西方语言的历史编码,允许在部分字符缺失的情况下识别部分文本。
在较复杂的环境中,例如,使用字母表不同的两种语言,通常得到完全不同的结果—一系列彼此毫无关联的抽象符号。这种情况在拥有繁复语言和书写系统的亚洲语言中尤为常见。日语中的单词 mojibake(乱码)被用来描述这一现象。当这种现象出现时,诊断将非常困难。最简单的解决方案就是将两端都移植到UTF-8.
就文件名而言,转换工作还算简单。convmv
工具就是为这一场景设计的,它可以转换文件名编码。此工具的使用相对简单,但是我们建议分两个步骤来使用,以避免意外。下例演示了一个包含ISO-8859-15编码目录名的UTF-8环境,并使用convmv
重命名的过程。
$
对文件内容来说,由于既存文件格式的多样性,转换过程会更加复杂。有些文件格式本身包含编码信息帮助软件使用它们。然后,打开这些文件并以UTF-8编码重新保存即可。其它的情况则必须指定原始的编码方式 (ISO-8859-1 或 “Western”、ISO-8859-15或 “Western (Euro)”,视其规则而定) 来打开它们。
简单的文本文件,可以使用recode
(软件包同名)自动对文件重新编码。该工具有很多选项,您可以自由探索。我们推荐您参考文档, recode(1) man手册,或recode info页面(更为完善)。