Linux是操作系统中的一朵奇葩,是中国软件发展的机遇。要使这朵奇葩在中国的大地上生根、发芽、开花,要想抓住Linux机遇,首先必须解决中文本地化的问题。
1999年政府公开支持在中国发展Linux,国内出现了好几家制作中文Linux发布版本的公司,推动了Linux在中国的发展和普及,但在初期中文Linux都是采用中文平台的方式。
一、“中文平台”
“中文平台”是为了让计算机能处理中文信息,在操作系统上建立必要的中文处理手段,即在ASCII码的操作系统上架构一个中文处理环境,用来提供中文的输入、显示、打印和中文文件的存储、处理、传输,并为应用软件开发和运行提供支持,俗称“中文平台”。
中文平台的主要技术特点是在ASCII码的操作系统上架构一个中文处理环境。该中文处理环境为了简化字符处理而使用的处理码可能是把汉字作为一个宽字符来处理,但进出核心的代码流都采用文件码,即多字节字符,所以中文平台本质上仍是按字节处理中文。
从显示方式来讲,可分为字符界面和图形界面两种“中文化”方式。字符界面的“中文化”又可分为内核汉化和外挂式两种。内核汉化是直接修改Linux内核的源程序,使之能处理中文信息。外挂式是不修改Linux内核的源程序,在原有应用程序接口(API)之外增加一层中文信息处理的支撑平台。
图形界面的“中文化”本质上都属外挂式,但实现的方式有:
修改XFree 86、即修改X Server;
修改XWindow的库函数Lib X11.so;
利用LD-PRELOAD载入动态库。
中文平台具体实现的技术特点各不相同,充分展现了中国人的聪明才智,但也带来一些问题。
1. 没有相应的标准,使中文应用软件在多版本之间的可移植性造成困难。有可能出现在某一版本中文平台上运行的中文应用软件在另一个版本的中文平台就不能运行或不能很好运行的情况。中文应用软件开发商可能要为每一个版本的中文平台开发一个产品。这对中文应用程序的发展很不利,而应用又是Linux能否发展的一个极重要的问题。
2.中文平台实际上仍是字节处理,而不是以字符为单位来处理,可能与ASCII码造成冲突,不能彻底解决汉字与ASCII码的冲突。而且不能彻底解决汉字的输入、输出问题,比如半个汉字的问题(显示、删除半个汉字,光标半个汉字移动)。
3.中国是由56个民族组成的大家庭。中国使用汉字的人占绝大多数,中文主要是汉语,但也包括其他少数民族的语言文字。海内外华人使用的汉字有简体与繁体,日本语、朝鲜语中也有汉字。“中文平台”和“中文化”是个很不确切的说法。而且中文平台也解决不了在一个系统内使用汉字、少数民族语言、日本和朝鲜的汉字问题.
4.POSIX是操作系统的一个标准。 Linux是符合POSIX标准的。而POSIX标准是采用国际化/本地化模式来解决多国语言文字的本地化。
1999年8月底成立了Linux国际化工作组,开始了Linux国际化(缩写为Li18nux)工作,同时也为中文本地化指出了正确道路。在这之前搞中文平台,是因为那时还没有Linux国际化组织,也没有Linux国际化标准。而且Linux是芬兰人发明,在美国成长起来的,开始也没有想到它会如此成功,会走向世界,因此Linux以前也没有考虑国际化的问题。Linux中文平台对Linux在中国的发展和普及起了重要的作用,但它已完成了它的历史使命。它只是一种暂时过渡的方法,是不得已而为之的方法,并不是中文Linux发展的正确之路。
二、Linux的国际化/本地化
国际化
(Internationalization,缩写为I18n,即取首尾两个字母,中间有18个字母)是规定在一个计算机程序内部的能力,使它适应不同的本地语言、本地风俗和编码字符集。
国际化标准定义一组国际化的应用程序编程界面和用户界面。
国际化主要包括用双字节/多字节编码代替单字节7位或8位编码,使用统一的大字符集ISO 10646,建立本地化数据库Locale DB,提供输入、输出服务(I/O服务)等内容。
1. 用双字节/多字节编码代替单字节7位或8位编码
在国际化标准中,系统字处理中,必须以字符为单位,而不能以字节为单位。字符既可以是单字节字符,也可以是多字节字符,所以彻底解决了半个汉字现象。
由于历史的原因,计算机为了实现不同硬件和软件系统之间数据传输的标准化,是使用7位编码的,称为ASCII(American standard code for information interchange)。ASCII是信息交换使用的美国国家标准编码,它是美国的标准。ASCII字符集是用7个数据位表示的代码,它用二进制数值来表示ASCII字符,代码值的范围在0到127之间。大部分基于PC的系统则使用八个数据位的扩展ASCII代码。这样可以使用额外的128个字符代表一些特殊符号、外语字符、图形符号。
通信软件的高位(第8位)是作为奇偶校验位,用来检测和改正通信错误。这种7位有效位的假定,渗透到很多软件中,如电子邮件的实现。
随着计算机应用的不断发展,7位编码已不够了。虽然以后又使用8位的扩展ASCII码,但256个字符即使对使用拼音文字的单文种的国家的用户也是不敷使用了。虽然用了7位或8位能覆盖基本字母,但还有多种多样的符号及印刷元素,其数量远大于256。各国拼音文字的字母和各种符号就有一万个左右,汉字则有七八万之多,使用双字节(16位)编码,也只能标识65536个符号。所以,如果想要计算机能使用多国文字,特别是使用汉字,则必须用双字节/多字节。
如果说用两位数表示年是计算机的千年虫问题,那么用单字节编码ASCII处理字符则是计算机文字处理的“千年虫”问题。但单字节编码的危害还没有引起人们足够的重视。
国际化的首要工作就是在系统字处理中,必须以字符为单位,而不是以字节为单位,即用双字节/多字节编码代替原来的单字节编码,这就是用宽字符(wide character,为了统一地处理单字节字符和多字节字符,而采用统一编码宽度的字符的内部表示)代替单字节字符。
2.使用统一的大字符集ISO 10646
使用统一的多八位大字符集ISO 10646是国际化的关键工作,也是国际化的核心工作。十分遗憾的是很多人对其重要性认识不足。
中国56个民族中使用汉字的人占绝大多数,有本民族语言的少数民族有17个。这些民族的文字属性及字量相差很大,目前对不同民族文字采用不同的编码方式。在中国使用人数最多的少数民族文字有七种:蒙古文、藏文、维吾尔文、哈萨克文、朝鲜文、彝文和壮文。其中蒙古文、哈萨克文、朝鲜文还须考虑和使用这些文字的其它国家如蒙古国、哈萨克斯坦共和国、朝鲜和韩国使用的编码一致。中文信息处理主要是汉字,但不只是汉字。它也应该而且必须包括少数民族语言的文字处理这一重要组成部分。这对加强民族团结、提高少数民族地区的经济、文化、科技发展,对于回击外国反华势力攻击中国不重视少数民族的谎言,都有十分重要的意义。为了在一个计算机系统内同时处理汉字和多种少数民族文字,就必须使用既有汉字、又有各少数民族文字的统一大字符集。
海内外华人使用的汉字有很大差异,这种差异不只是反映在简繁体和用词的不同,更重要的是编码和字符集不同,而要解决这个问题必须采用统一的大字符集。而且,国际化的要求也使得大字符集的使用更为迫切。
ISO 10646 信息技术通用多八位编码字符集(Information technology-Universal Multiple-
octet Coded Character Set,缩写为UCS)是国际标准化组织对全世界各国地区使用的书面语言文字及符号进行统一编码的编码字符集的国际标准。已于1993年5月正式审定公布了ISO 10646.1。我国根据等同采用国际标准的原则,也于1993年12月宣布为国家标准GB13000.1。
目前,该标准已收入了各国现行标准的文字符号近六万个,可用于世界上多种语言的书面形式及附加符号的表示、输入、显示、存储、处理、交换和传输。其中中文简繁体汉字、日文用汉字、朝鲜文用汉字(简称CJK汉字)共20902个。
ISO 10646标准颁布后,又经历了一系列的修改与扩充。经过中、日、韩等国的不懈努力,目前CJK汉字扩充集的6582个汉字、彝文和汉字结构符、汉字部首与构件编码已纳入BMP,蒙文和藏文编码也取得重要进展。目前正在制定辅助平面(可收入汉字的标准,辅助平面2将纳入CJK汉字扩充集Extension B的四万多汉字及Super CJK的六万多汉字。
其实,使用ISO 10646,中国是最大的受益国。但奇怪的是国外的公司为了软件的国际化对ISO 10646十分积极,而我国的部分企业却不重视。
但是国际化标准的制定进展太慢,可能是对“地方”的积极性没有发挥或发挥不够。特别是UCS中最大量、最困难的工作是汉字部分。在制定UCS标准时应充分重视中国的意见,并充分发挥中国的积极性。
在处理汉字字符集方面,考虑语言中的内在关系,哪些字是常用、次常用,如何排序(按汉语拼音、笔划、部首),如何寻求最佳方案等,最有研究、最有发言权的自然是中国人。当然,海外华人和日本、朝鲜、韩国也都使用汉字,他们对汉字字符也很有研究,也要充分考虑他们的意见,但最大的用户和市场是在中国。
国际化标准组织在汉字字符集中应以中国的意见为重,另外如IBM、SUN等大公司对汉字本地化也有很多研究,对国际化做出很大贡献,也应多和他们协商。
每个国家执行的是本国的国家标准,国际标准只有变为国家标准时才能被该国执行。国际标准是通过多国的国家标准来实现的。
国际化与本地化是一个辨证的关系。国际化是为了解决软件能在各个使用不同语言、不同风俗的国家和地区的编码字符集都能使用的问题,而对计算机程序作出的某些规定。简言之,国际化正是为了解决本地化。另一方面,本地化是国际化向特定本地语言环境的转换,本地化要适应国际化的规定。