Linux汉化在曲折中前行
作 者: 方剑
——从技术角度论Linux中文平台走国际化道路的必要性
随着Linux在中国的发展和普及,Linux成为一股不可阻挡的潮流。纵观Linux在中国发展的过程,除了Linux本身在用作服务器所具有的优势外,它还是人们心目中对抗微软操作系统的惟一武器。同时,人们也注意到Linux在用户桌面上的不足之处,它甚至没有理想的中文字处理软件,不能担当日常办公事务的重务。
中文Linux就是在这种情况下发展起来的。众多的厂商和Linux爱好者把目光投向了中文Linux发行版本,开发自己的中文平台。仅1999年初到现在,就涌现了七种中文Linux版本(包括未发布的)。中文Linux发展速度之迅猛,大有当年万“码”奔腾之势,它甚至没有给人留下更多的思考时间。
大家在用中文操作平台的时候都不太了解中文平台的技术原理,实际上,Linux 在中文技术与UNIX的I18N等技术都有很深的渊源,同样,由于国际通用的Linux源代码并没有考虑到双字节基础,因此, Linux上的中文平台都采用了非常规的手段来解决中文输入与输出(显示和打印)。这些手段主要分为如下几类:
* 利用动态载入的方法修改系统函数,如TL-ZwinPro(TurboLinux简体/繁体中文版)、CLE(台湾)、CLEEX(华胜)和ZhXWin(宫敏博士创作,被广泛使用)。
* 直接修改X系统的库函数,如XteamLinux(冲浪平台)。
* 修改Xfree86软件包,如CXWIN(台湾)、CXWIN增强版(BluePoint Linux预览版)。
* 截取X Server和X Client的通讯,如CXServer.
值得一提的是,利用动态载入的方法和直接修改X Window系统函数的方法实际上属于同一种方法,它们都属于外挂方式。用户可以在http://www.turbolinux.com.cn/chinese/上了解到有关各中文平台的介绍。
由以上分类可以看出,在Linux中文化方面,除了沿袭Window下的汉化方法外,还增加了X Window下的特殊汉化方法,可以说是把国人的智慧发挥得淋漓尽致。
实际上,中文平台是一个过渡性技术,但中文平台在现阶段有其存在的必要性。我们初次接触到Linux并为其功能和表现所震惊的同时,才发现Linux上的中文软件是如此之少,而短时期内也不能使很多软件支持中文,所以选择中文平台作为解决方案是最好的方法。必须把Linux中文化同软件国际化、软件本地化的方法放在一起考虑。中文平台实际上是做了国际化所应做的部分,即双字节显示支持、双字节输入支持等,背离了作为本地化版本的Linux所需做的事情,即信息翻译、图标设计等。
目前,TurboLinux上采用中文平台TL-ZwinPro,利用外挂的方式实现汉字的输入输出。它是目前中文平台中功能最多的中文平台之一,也是大陆地区唯一兼容XIM中文输入的平台。ZwinPro以GPL方式发布,任何用户都可以在TurboLinux的FTP站点上下载使用。ZwinPro之所以使用外挂方式,是因为它比其它汉化方式更具灵活性。它为每一个X Window下程序留下自己的可操作空间。它截取了十几个用于汉字输入输出和屏幕取词的X Window库存函数并完善地使这些函数所具有的功能衔接到一起。在X字体载入方面,配合TrueType字体服务器,使用汉字延迟载入,把中文平台所占内存缩减速到最少,从而大大提高了软件载入速度。通过X Window底层通讯机制,把应用软件与输入软件、控制软件和屏幕取词软件完美的结合在一起。
ZwinPro所具有的主要功能有:
* 多内码显示、支持中文GB/GBK、中文Big5和日文显示。
* 多内码动态输入,支持中文GB/GBK、中文Big5动态输入,即通过控制条改变窗口的编码后,输入内码自动切换。
* TrueType字本支持,汉字字体自由改变,汉字字号随西文自动缩放。
* 中文输入,支持Chinput协议和XIM协议。
* 方便的屏幕取词。
ZwinPro不但在内码切换中文显示方面具有独到之处,而且在中文输入、屏幕取词技术和Linux中文开发库存方面也很先进。
中文显示
ZwinPro使用TrueType字体和点字体相结合的方法来显示中文。支持GB/GBK/Big5编码显示,并且显示字体的大小随西文字体自动缩放,当西文字体大小接近汉字点阵字体时,则采用相应的点阵体显示。另外央同一窗口里,还可以通过控制条改变内码的显示,对于同一内码的汉字如GB/GBK,还可以改变字体显示。ZwinPro目前支持宋体、黑体、仿宋体和楷体。
中文输入
中文输入软件采用作者几年前所开发的Chinput,并在功能上有很大改进。Chinput是以Cxtem输入为基础的输入软件,最初只支持基于X通讯的协议。它具有良好的外观,支持浏览输入。在输入方法方面,除了具有Cxtem的输入方法这外,还增加了李振春的智能拼音等。最近Chinput增加了XIM输入协议,使它向国际标准迈出了重要的一步。在TurboLinux繁体中文版中,两种协议并存使用,为中文输入提供了更多方便。
在使用了XIM协议后,在Linux上的常用软件,如Netscape、nxterm、xemacs、rxt、vin和以gtk、qt、Motif/Lesstif为基础的软件将不依赖于中文平台便能输入中文。
Chinput也是被广泛使用的输入软件,以它早期版本为基础的版本已用在XteamLinux、BluePoint和Linux ZhXWin中。
屏幕取词
在中文平台ZwinPro下,用户可以很方便地使用屏幕取词。这也是目前Linux下惟一实现屏幕取词的中文平台。屏幕取词的技术遵循了Window下屏幕取词的规则,即采取闪现窗口,同时截获鼠标位置和字符串输出函数的方法,获取鼠标位置处的单词(或汉字),并通过X Window消息传递给词典软件。屏幕取词功能为网络用户提供了很大的方便,特别是在使用Netscape浏览网页时,用户不再为此烦恼。
中文开发库
ZwinPro提供了可以开发中文软件的库函数和目标文件。用户在开发出英文软件后,只要和该库连接,就可用在其它Linux上,中文显示和输入自动实现。
众所周知,由于众多中文Linux版本的出现,中文软件在各版本之间的可移植已经大大降低。当在中文平台上运行良好的中文Linux卓越,很难再支持中文部分。所以开发跨“平台”的中文软件时,由中文平台提供开发库显得尤其重要。
从某种意义上来讲,中文平台有一些不可克服的缺点,其最大的弱点是许多中文软件不能脱离中文平台运行,并且由于中文平台的多样性,软件商在开发软件时可能需要为每一个中文平台开发一个版本的软件,造成人力和时间的浪费。中文平台的另一个弱点是在国际化方面不彻底,特别是在汉字的操作方面,多会出现半汉字问题,如半汉字删除、光标半汉字移动、鼠标的半汉字粘贴等,而这些问题仅仅靠中文平台是解决不了的。
基于上述技术原因和历史发展情况,我们可以看出中文平台正处于一个微妙的时期,它对于Linux在中国的发展起了至关重要的作用,但正像Window下的中文平台一样,它终究会成为历史。中文平台不但很难成为Linux下的标准,而且各Linux中文平台之间也很难在成统一的标准。
现在在国内有种不好的技术趋势,有人故意将外挂和直接修改X Server的方法(如CXWIN)的区别夸大, 以说明到底哪一种汉化方式比较好, 实际上, 把外挂的方式变成直接修改 X Server的方式只不过用几小时的时间。在实际应用上, 两者各有优点和缺点, 外挂方式的优点是灵活性强, 就象Windows下的外挂平台一样, 可挂可不挂, 对编码显示有灵活的控制, 这主要是因为它是在用户空间操作, 可以针对具体窗口进行操作, 它的缺点是对每一个X应用软件增加了几十 K 大小的内存(由外挂平台的功能决定), 以拥有自己的空间, 这也是对应用软件进行特别配置所必须的(应注意的是, 字体空间存储在X Server 上, 不在用户空间). 直接修改X Server的方法的优点是节省内存, 避免了在用户桌面上留下LD_PRELOAD变量, 缺点是灵活性差,不能对每一个窗口进行控制, 必须随X版本的升级做改动, 更危险的是, 对X Server的改动可能影响到整个X窗口系统的稳定性。
上述的中文平台都是临时的解决方案, 虽然目前在很大程度上满足了用户需要, 但不是最终解决方案,也不是什么内核汉化。最彻底的汉化是随着Linux内核对 Unicode的支持,改动应用软件使其支持双字节操作和XIM输入。也许这才可以称之为内核汉化。但是其中双字节操作是中文平台不能解决的,因此中文平台将起到越来越小的作用, 甚至消失。而我们现在所做的中文平台工作虽然花费了大量的精力,并且在现阶段对于在中国普及Linux,提高技术人员Linux的开发水平方面发挥了相当大的作用,但毕竟只是一个阶段性的产物,也许只能称之为过眼云烟。而现在鼓吹“内核汉化”的人,只不过是一种市场炒做行为,但从某种意义上来讲,这是一种技术误导,对Linux发展有百害而无一利。
最近,以Sun为首发起了一个Linux国际化组织(http://www.lil8nux.org/),该组织将使现在Linux上常见的软件国际化,主要的参与组织有TurboLinux、CSK、JLA、TLUG、SuSE、Redhat、NTT、Fujitsu、NEC、Caldera、LBI、IBM等公司。届时我们将发现,Linux将不再需要中文平台便能处理中文,做中文Linux发布版本的公司将要做的只是把Linux本地化。
Linux中文化发展到今天,倾注了很多人的心血,同样,也有许多人开发出富有成效的中文平台,尽管在将来Linux国际化逐步发展的前提下,中文平台将逐渐退出历史舞台,但我们将记住并尊敬这些人。同样,希望Linux开发的后来人能够认清真正的Linux技术发展方向,正确地推动国内Linux技术的发展。
发布人:netbull 来自:IT365