BBS水木清华站∶精华区
发信人: linuxrat (竹剑居士*习拳悟道*闭关苦修), 信区: Linux
标 题: www.turbolinux.com.cn中文论坛文(2)
发信站: BBS 水木清华站 (Fri Oct 1 21:30:34 1999)
附注说明: 本文转载尚未询问作者同意. 如有转载者, 请切记先同作者联系.谢谢.
注由:Linuxrat(linuxrat@263.net)
====================================================
揭开Linux下中文平台的面纱
作者:于明俭(justiny@turbolinux.com.cn)
------------------------------------------------------------------
Linux 下的汉化包括X Window系统和控制台的汉化, 控制台类似于DOS 操作窗口, X Window系统类似于MS Windows系统, 由于人们的主要工作环境是X Window, 在此对X Window的汉化机制作详细阐述.
Linux 下的中文平台, 目前的实现方法属于下列其中之一或兼而有之:
替换X Client的函数
截取 X 通讯
直接修改X Server
(因为无法转入图像, 我专门画了一下, 画的不好, 希望大家不要见怪! :-) )
|------------| |----------|
| X Server |=======================| X Client |
|____________|========| |===========|__________|
| |
CXWIN CXServer TL-ZWinPro, XA+CV+XCIN
ZhWin, CLEXX($)
我们知道, X 窗口系统的结构是Client/Server方式, 从上图可以看出, 如果
对X 进行中文化, 则可能从上述的三个地方入手.
其中替换Client函数的方法为动态汉化, 它是通过LD_PRELOAD (或文件)动态
加载的, 类似于Windows下的外挂式中文平台. 截取X通讯的方法, 是通过设置
一个虚拟的X Server, 当Client 与此Server联接时, 这个虚拟的Server截取
了通讯并把Client 的请求发送给真正的X Server, 它类似于一个Proxy Server.
这种截取信息的方法在其它Unix平台上的实现是有意义的, 但是在Linux这种开
放源代码的系统上是不足取的. 实际上, 三种方法的实质是一样的, 目的都是
修改X 窗口系统中用于显示和输入的部分从而使X窗口系统能够显示/输入双字节编码.
有人故意将外挂和直接修改X Server的方法(如CXWIN)的区别夸大, 以说明到
底哪一种汉化方式比较好, 实际上, 把外挂的方式变成直接修改 X Server的
方式只不过用几小时的时间. 在实际应用上, 两者各有优点和缺点, 外挂方式
的优点是灵活性强, 就象Windows下的外挂平台一样, 可挂可不挂, 对编码
显示有灵活的控制, 这主要是因为它是在用户空间操作, 可以针对具体窗口
进行操作, 它的缺点是对每一个X应用软件增加了几十 K 大小的内存(由外挂
平台的功能决定), 以拥有自己的空间, 这也是对应用软件进行特别配置所
必须的(应注意的是, 字体空间存储在X Server 上, 不在用户空间). 直接
修改X Server的方法的优点是节省内存, 避免了在用户桌面上留下LD_PRELOAD
变量, 缺点是灵活性差,不能对每一个窗口进行控制, 必须随X版本的升级做改
动, 更危险的是, 对X Server的改动可能影响到整个X窗口系统的稳定性.
上面只是从技术角度分析中文平台, 一个中文平台的质量最终取决于用户的
评价, 即对用户提供的功能和操作方便程度, 最重要的是, 在中文Linux上
提供的本地化的应用软件的数量和质量. 一个好的中文平台还应该用户可以
很方便地切换成纯英文状态, 就像 Locale的设计思想一样, 从这一点上考虑,
外挂平台更适应用户的需要, 这也是当前大多数中文平台采取外挂式平台的
原因.
显然, 上面的汉化方法都不是最终解决方案. 最终方案应当是符合国际标准
的. 在显示上, X Locale 对双字节(GB/GBK/Big5) 的支持是基础.所写软件
应设置字体集(FontSet)或在高层库函数中支持字体集.这对于Linux的程序员
是一个挑战.在输入上, 应使用X11R6的标准输入协议XIM. 这同样要求所写
软件支持此协议或所使用的高层库函数支持此协议.
综上所述, 我们的看法是,在X的汉化上不存在所谓的"内核汉化", X 本来就
不属于内核. 上述的中文平台都是临时的解决方案, 虽然目前在很大程度上
满足了用户需要, 但不是最终解决方案. 最彻底的汉化是改动应用软件使其
支持双字节操作和XIM输入,其中双字节操作是中文平台不能解决的. 从国际
发展来看, 中文平台将起到越来越小的作用, 甚至消失. 特别是对内核的改
动, 随着Linux内核对 Unicode的支持, 也将在不远的将来消失.
================= END ==========================
--
| 以无法为有法 , | 拳本无法,有法也空; | 我爱GNU/Linux, |
| 以无限为有限 。 | 一法不立,无法不容。 | 因为我爱自由! |
| | | |
| 截拳道宗师-李小龙 | 意拳宗师-王芗斋 | 土人 Linuxrat |
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 202.112.168.201]
BBS水木清华站∶精华区