Linux 是>操作系統 中的一朵奇葩,是中國軟件發展的機遇。要使這朵奇葩在中國的大地上生根、發芽、開花,要想抓住Linux機遇,首先必須解決中文 本地化 的問題。 1999年政府公開支持在中國發展Linux,國內出現了好幾家制作中文Linux發布版本的公司,推動了Lin
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的系統則使用八個數據位的擴展AS