📄 00000001.htm
字号:
<HTML><HEAD> <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人: reden (OFFER马上来吧~), 信区: Linux <BR>标 题: Linux 的中文化问题简介 <BR>发信站: BBS 水木清华站 (Sun Mar 7 20:52:35 1999) <BR> <BR>作者按 <BR> <BR> <BR> 底下这篇文章是我最近写程式的一点点心得,除了前段 <BR> <BR> 部讨论了 Linux I18N 环境外 (已在 Linux 连线版贴 <BR> <BR> 出),後半部还加了一些有关 I18N 程式写作的简介。 <BR> <BR> 我想这篇文章就发表在 CLDP 上, 希望 CLDP 可以收 <BR> <BR> 录。更希望这篇文章对有兴趣的朋友有帮助, 让大家 <BR> <BR> 能早日进入 I18N 的世界 :-)) <BR> <BR> <BR> 由於我所知很有限,所以文章中可能有很多错误,而关 <BR> <BR> 於 Xi18n 的部分, 我也有很多因为没有去研究,故略 <BR> <BR> 过不提了。 因此,希望各位高手能多多给我批评与建 <BR> <BR> 议, 或帮忙我将不足之处补齐,让这篇文章更完美。 <BR> <BR> <BR> 在此先谢谢各位。 <BR> <BR> <BR> 谢东翰 (Tung-Han Hsieh) < <BR> <BR> <A HREF="mailto:thhsieh@twcpro.phys.ntu.edu.tw>">thhsieh@twcpro.phys.ntu.edu.tw></A> <BR> <BR> <BR> <BR> <BR> Linux 的中文化问题简介 <BR> <BR> <BR> 一、前言: <BR> <BR> <BR> 最近这个话题大家吵得有点厉害,大家都希望 Linux 能在中文方面有 <BR> <BR> 所进 步,各家有各家的说法,莫衷一是。由於我最近常与 CLE 的 <BR> <BR> group 有联系, 同时也正在写一些与中文相关的程式,因此我大略说 <BR> <BR> 一下「我们正在做什麽」, 让大家参考。 <BR> <BR> <BR> 我希望大家能将这篇文章当做技术性文章来读,不要再有情绪化的批 <BR> <BR> 评,必境 我们要的是 solution, 情绪化的批评对我们实在没有帮 <BR> <BR> 助。除此之外,我的观 点可能有错,也可能过份乐观,也欢迎大家能 <BR> <BR> 就技术方面给予我指教。 <BR> <BR> <BR> 二、 I18N 与 locale: <BR> <BR> <BR> 要将 Linux 中文化,朝著标准走才是长远之计。各位如果有见过近代 <BR> <BR> 商业版的 UNIX 就会晓得,它们「中文化」之彻底,令人惊叹,诸如 <BR> <BR> 中文选单、中文讯息 .... 您能想像得到,或说只能在 Win95/98/NT <BR> <BR> OS/2 .... 等上头才见得到的 中文环境,它们都有。然而,它们的中 <BR> <BR> 文并不是像目前 Linux 上常见到的那样, 由一堆程式七拼八凑出来 <BR> <BR> 的,它们全部都是遵循一个标准: I18N 。 <BR> <BR> <BR> I18N 是 InternationalizatioN (国际化) 的缩写,第一个字 I 与最 <BR> <BR> 後一个字 N 之间有 18 的字母,故名。 I18N 并不是只有表面上将 X <BR> <BR> Window 「国际化」 而已,它是□基在最底层的 libc 上。 libc 必 <BR> <BR> 须要有 locale 的支援,才能向 I18N 起步。 <BR> <BR> <BR> 什麽是 locale? 简单说就是一组「地区语言」的资讯。它包括了 (详 <BR> <BR> 见 man setlocale): <BR> <BR> <BR> LC_CTYPE: 字元定义 <BR> <BR> LC_MESSAGES: 讯息显示 <BR> <BR> LC_TIME: 时间显示格式 <BR> <BR> LC_NUMERIC: 数字显示格式 <BR> <BR> LC_MONETARY: 货币显示格式 <BR> <BR> LC_COLLATE: 字母顺序与字串比较 <BR> <BR> <BR> 其中,与一般使用者最有关系的,是 LC_CTYPE 与 LC_MESSAGES 。 <BR> <BR> LC_CTYPE 直 接关系到某些字元或内码在目前的 locale 下是否可印? <BR> <BR> 要如何转换? 对应到那 一个字? .... 等等。 LC_MESSAGES 则关系到 <BR> <BR> 软体的讯息输出是什麽样的语文。真 正完整的 locale 支援,是当我 <BR> <BR> 们在 shell prompt 下,直接设好环境变数,则我 们马上就能切换到 <BR> <BR> 那个语文了。例如: <BR> <BR> <BR> bash: export LC_CTYPE=zh_TW.Big5 <BR> <BR> <BR> 有了 locale 的「协定」,使得任何地区的语文,只要在加入适当的 <BR> <BR> locale data 之後, libc 就能正确地处理它了,而我们的「中文」 <BR> <BR> 当然也不例外。由於前人与 CLE group 的努力,目前我们已有自己的 <BR> <BR> locale data 了。有安装 CLE 的朋友可 以到 /usr/share/locale 下 <BR> <BR> 看看, zh_TW.Big5 就是我们的 locale data, 虽然还 不够完整,但 <BR> <BR> 已能 work。 <BR> <BR> <BR> 目前 Linux 对於 locale 的支援如何? 可以大概地说,西方语系差不 <BR> <BR> 多没问题了, 但东方语系还有不少问题。如果您的 Linux 系统是用 <BR> <BR> libc5 (例如 Slackware) 的话,那差不多可以说支援得相当差,几乎 <BR> <BR> 只能靠「七拼八凑」的方法来有限度地 使用中文。如果是用 libc6 <BR> <BR> (glibc2) 的话,那就有相当的 locale 支援了。 <BR> <BR> <BR> 然而,目前大部分使用 glibc2 的系统都是 glibc-2.0.7, 这一版对 <BR> <BR> 东方语系的支 援还不够好,特别是 LC_CTYPE ,它无法辨认、转换我 <BR> <BR> 们的 Big5 码,必须要等到 glibc-2.1 以後,才能完全解决这些问 <BR> <BR> 题。但这并不是说使用 glibc-2.0.7 的广 大使用者都没希望了,事 <BR> <BR> 实上有一个 libwcsmbs 的套件,它可以将 glibc 中有问 题的部分取 <BR> <BR> 代掉,让我们的 LC_CTYPE 部分可以「几乎 90% 正确」地工作。而这 <BR> <BR> 个 套件就是目前 CLE 的标准之一,也是很重要的一个部分,虽然大 <BR> <BR> 家可能感受不到它 的存在。 <BR> <BR> <BR> 最近 glibc-2.1 的 pre-release 已经出来,我个人已做过初步测 <BR> <BR> 试, LC_CTYPE 在我们的 locale 下已经正常,虽然仍有其他问题存 <BR> <BR> 在,但这已是一个好消息,我 预计在未来的一年内,等大部分的 <BR> <BR> Linux distribution 都换装了 glibc-2.1 之 後,我们就有了最底层 <BR> <BR> 的「中文化」条件。 <BR> <BR> <BR> 三、 X Window 的部分: <BR> <BR> <BR> 接著我们来看看上层, X Window 的「中文化」 (或「国际化」)。 <BR> <BR> X11R6 也有一 个 locale 的目录,放在 /usr/X11R6/lib/X11/locale <BR> <BR> □头,如果是装 CLE 的朋 友,就会见到一个 zh_TW.Big5 的目录, <BR> <BR> 那就是我们的 XLC Locale data。在「标 准」的情况下, XLC <BR> <BR> Locale 必须架构在 libc locale 之上运作,它□头除了定 义一些字 <BR> <BR> 元对应,最重要的是内码与字型的对应。以我们的 locale 为例,我 <BR> <BR> 们需 要两种字型,一是「半形 (单位元)」,显示 ASCII 码用,另一 <BR> <BR> 是「全形 (双位元)」 用来显示中文。举一个例子,像以下这一串字: <BR> <BR> <BR> 这是一个 abcd .... 测试字串 string! OK! <BR> <BR> <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -