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水木清华站∶精华区