Linux 是作業系統中的奇葩,是中國軟體發展重大機遇。要讓這朵奇葩在中國生根發芽開花,首要解決中文本地化問題。
1999 年中國政府公開支援 Linux 發展,國內湧現多家中文 Linux 發行商,推動普及。初期普遍採用「中文平台」處理中文資訊:在 ASCII 核心上建構中文處理環境,提供輸入/顯示/列印、中文檔案儲存處理傳輸、應用開發運行支援。技術特點:ASCII 核心上架構中文環境,為簡化字符處理常以寬字符處理漢字,但核心進出代碼流仍用多位元組編碼,本質仍是按位元組處理中文。
本質皆屬外掛式,實現方式不同:修改 XFree86 (X Server)、修改 Lib X11.so、利用 LD_PRELOAD 載入動態庫。
中文平台雖展現中國才智,但帶來嚴重問題:
1999/08 Linux 國際化工作組 (Li18nux) 成立,指明正確方向。此前搞中文平台因無國際化組織與標準,且 Linux 由芬蘭人發明、美國成長,初期未預料全球成功,未考慮國際化。中文平台完成歷史使命,只是權宜之計,非正確道路。
國際化 (I18n) 規定程式內部能力,使其適應不同本地語言、風俗、編碼字符集。定義一組國際化 API 與用戶介面。核心內容:
系統字處理必須以字符為單位而非位元組。字符可為單/多位元組字符,徹底解決「半個漢字」現象。歷史原因採用 7 位 ASCII (0-127),PC 多用 8 位擴展 ASCII (額外 128 字符)。通訊軟體高位原為奇偶校驗位,7 位假設滲透至許多軟體 (如郵件)。隨應用發展 7 位遠遠不夠,8 位 256 字符對單一拼音文字國家也不夠 (拼音文字+符號約萬個,漢字七八萬)。雙位元組 (16 位) 僅能標識 65536 符號。欲支援多國文字特別是漢字,必須採用雙/多位元組編碼。如同「千年蟲」問題,單位元組編碼處理字符是電腦文字處理的「千年蟲」,危害未獲足夠重視。國際化首要工作:系統字處理以字符為單位,用寬字符 (統一編碼寬度的內部表示) 取代單位元組字符。
ISO 10646 (UCS) 是國際標準化組織對全球書面語言文字符號統一編碼標準,1993/05 正式公布為 ISO 10646.1,中國 1993/12 等同採用為 GB 13000.1。已收錄近六萬字符,可用於多種語言書面形式及附加符號表示/輸入/顯示/儲存/處理/交換/傳輸。含中日韓 (CJK) 漢字 20902 個。標準經修改擴充,CJK 擴充集 6582 字、彝文/漢字結構符/部首構件編碼納入基本多文種平面 (BMP),蒙文/藏文編碼重要進展。輔助平面正納入 CJK 擴充集 B (四萬多漢字) 及 Super CJK (六萬多漢字)。
使用 ISO 10646,中國是最大受益者。國外公司為國際化積極推動,國內部分企業重視不足。標準制定進展慢,可能未充分發揮「地方」積極性,特別是 UCS 中最大量最困難的漢字部分。制定時應重視中國意見、發揮中國積極性。處理漢字字符集考慮語言內在關係(常用/次常用、排序規則、最佳方案),中國人最有研究最有發言權。海外華人、日韓也用漢字有研究,應充分考慮,但最大用戶與市場在中國。國際標準組織漢字字符集應以中國意見為重。IBM、SUN 等大廠對漢字本地化有研究、貢獻大,應多協商。國際標準須變國家標準才能執行,透過多國國家標準實現。國際化與本地化為辯證關係:國際化為本地化奠基,本地化是國際化特定地區落地,雙相輔相成構建穩健多語言支援體系。