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等大公司對漢字本地化也有很多研究,對國際化做出很大貢獻,也應多和他們協商。
每個國家執行的是本國的國家標准,國際標准只有變為國家標准時才能被該國執行。國際標准是通過多國的國家標准來實現的。
國際化與本地化是一個辨證的關系。國際化是為了解決軟件能在各個使用不同語言、不同風俗的國家和地區的編碼字符集都能使用的問題,而對計算機程序作出的某些規定。簡