萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

把握機遇建構穩健中文 Linux 系統:從「中文平台」走向國際化/本地化 (I18n/L10n)

Linux 是作業系統中的奇葩,是中國軟體發展重大機遇。要讓這朵奇葩在中國生根發芽開花,首要解決中文本地化問題。

一、「中文平台」的興起與局限

1999 年中國政府公開支援 Linux 發展,國內湧現多家中文 Linux 發行商,推動普及。初期普遍採用「中文平台」處理中文資訊:在 ASCII 核心上建構中文處理環境,提供輸入/顯示/列印、中文檔案儲存處理傳輸、應用開發運行支援。技術特點:ASCII 核心上架構中文環境,為簡化字符處理常以寬字符處理漢字,但核心進出代碼流仍用多位元組編碼,本質仍是按位元組處理中文。

字符介面中文化

  • 核心漢化: 直接修改核心原始碼使其處理中文。
  • 外掛式: 不修改核心,在原有 API 外增加中文處理支援層。

圖形介面中文化

本質皆屬外掛式,實現方式不同:修改 XFree86 (X Server)、修改 Lib X11.so、利用 LD_PRELOAD 載入動態庫。

中文平台雖展現中國才智,但帶來嚴重問題:

  1. 缺乏統一標準,應用可移植性差: 中文應用在多版本間難移植,開發商可能需為每版本單獨開發,極不利生態發展。
  2. 仍是位元組處理非字符處理: 無法徹底解決漢字與 ASCII 衝突,無法妥善處理輸入輸出,如顯示/刪除半個漢字、游標半個漢字移動等「半個漢字」現象。
  3. 「中文」定義模糊,無法涵蓋多語言需求: 中國 56 民族,漢字用戶雖多但中文不限漢語,含少數民族語言。海內外華人簡繁體不同,日/韓語也有漢字。「中文平台」說法不精確,無法解決同系統同時使用漢字、少數民族文字、日韓漢字問題。
  4. 與 POSIX 標準不兼容: POSIX 採用國際化/本地化模式解決多語言本地化,中文平台做法背道而馳。

1999/08 Linux 國際化工作組 (Li18nux) 成立,指明正確方向。此前搞中文平台因無國際化組織與標準,且 Linux 由芬蘭人發明、美國成長,初期未預料全球成功,未考慮國際化。中文平台完成歷史使命,只是權宜之計,非正確道路。

二、Linux 國際化與本地化

什麼是國際化

國際化 (I18n) 規定程式內部能力,使其適應不同本地語言、風俗、編碼字符集。定義一組國際化 API 與用戶介面。核心內容:

  • 以雙/多位元組編碼取代單位元組 7/8 位編碼
  • 使用統一大字符集 ISO 10646
  • 建立本地化資料庫 (Locale DB)
  • 提供輸入/輸出服務 (I/O 服務)

以雙/多位元組編碼取代單位元組編碼

系統字處理必須以字符為單位而非位元組。字符可為單/多位元組字符,徹底解決「半個漢字」現象。歷史原因採用 7 位 ASCII (0-127),PC 多用 8 位擴展 ASCII (額外 128 字符)。通訊軟體高位原為奇偶校驗位,7 位假設滲透至許多軟體 (如郵件)。隨應用發展 7 位遠遠不夠,8 位 256 字符對單一拼音文字國家也不夠 (拼音文字+符號約萬個,漢字七八萬)。雙位元組 (16 位) 僅能標識 65536 符號。欲支援多國文字特別是漢字,必須採用雙/多位元組編碼。如同「千年蟲」問題,單位元組編碼處理字符是電腦文字處理的「千年蟲」,危害未獲足夠重視。國際化首要工作:系統字處理以字符為單位,用寬字符 (統一編碼寬度的內部表示) 取代單位元組字符。

使用統一大字符集 ISO 10646

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 等大廠對漢字本地化有研究、貢獻大,應多協商。國際標準須變國家標準才能執行,透過多國國家標準實現。國際化與本地化為辯證關係:國際化為本地化奠基,本地化是國際化特定地區落地,雙相輔相成構建穩健多語言支援體系。

copyright © 萬盛學電腦網 all rights reserved