--------------------------------------------------------------------------
國際化、本地化和中文化
國際化、本地化和多語言化的概念
中文化
X11 國際化的歷史和級別
國際化標准組織
國際化的意義
Locale Locale 的概念 在X中使用Locale 文化習俗的差別
X 窗口系統的國際化 顯示的國際化 字符集和編碼 多字節字符(Multibyte)和寬字符(WideChar)的使用 Unicode 字體(Font)和字體集(FontSet) 信息的國際化 輸入的國際化 打印的國際化 客戶程序間通訊的國際化
開發符合國際化標准的軟件 開發國際化軟件 使非國際化軟件國際化
目前中文化中存在的問題 編碼動態切換的問題 中文編碼自動識別問題 Linux上的中文平台到國際化的過渡
附錄
寬字符處理函數函數與普通函數對照表
X 窗口系統下支持中文的函數庫
支持多語言的典型軟件
支持Unicode的軟件
--------------------------------------------------------------------------
二 Locale
Locale 的概念
Locale 是ANSI C語言中最基本的支持國際化的標志, 對中文Linux來說, 如果它支持國際化, 那麼支持中文Locale是最基本的要求.
Locale 是軟件在運行時的語言環境, 它包括語言(Language), 地域 (Territory)和字符集(Codeset). 其格式為: 語言[_地域[.字符集]]. 如對中文GBK字符集, locale的格式是:zh_CN.GBK. 目前Linux上的中文 Locale還不完善, glibc2.1.x中的許多涉及Locale的C函數還不正確. 如果 用戶需要安裝中文GBK Locale, 可以直接使用TLC6.0中的:
glibc-2.1.2(含有GBK模塊) localedata-zh-0.07 /usr/X11R6/lib/X11/locale/zh_CN.GBK/XLC_LOCALE(X 下的 GBK Locale)
Locale 包含了以下分類:
LC_COLLATE, 用於比較和排序. 排序對中文來說也比較重要, 但是現在的 glibc中的locale對中文支持有些問題. 漢字排序的 的方式有許多種, 按照 發音(漢語拼音)或者漢字筆畫來排序 是比較容易被接受的. LC_CTYPE, 用於字符分類 LC_MONETORY, 用於貨幣單位 LC_NUMERIC, 用於數字顯示格式. 下面是不同國家的在貨幣符號 和數字格 式上的不同:
中國大陸: 1,234.56RMB 美國: $1,234.56 德國: 1.234,56DM
LC_TIME, 用於時間和日期. 時間可以用12小時或者24小時的 格式來計算. 在小時和分鐘之間可以用逗點或者冒號隔開. 下面 是一些Locale設置的時 間和日期的格式:
中國: 14點20分 2000年三月十四號 英國: 02:20pm 14/03/2000 美國: 02:20pm 03/14/2000 芬蘭: 14.20 14.03.2000
LC_MESSAGES, 用於國際化信息, 主要是提示信息,錯誤信息, 狀態信息, 標 題, 標簽, 按鈕和菜單等.
Locale 通過ANSI C 函數setlocale(分類, locale)來初始化locale 數據. 當locale設置為空時, locale的值便從系統的環境變量中取得. 為了 方便應用 軟件, 設置所有的分類, 可以采用下述方式:
setlocale(LC_ALL, "");
如果不成功, 該函數返回NULL. 函數應該回落到setlocale(LC_ALL,"C").
在X中使用Locale
在X的客戶程序中使用Locale的機制和在標准C函數中使用Locale的方式一樣, 除 此之外, 在X庫中還定義了另外兩個函數來判斷X的locale支持和設置locale 的修 飾(XModifier), 在X中使用Locale和libX11的基本步驟如下:
setlocale(): 設置當前的locale XSupportLocale(): 用來判斷X是否支持目前設置的locale. XSetLocaleModifier(): 它用來指定一系列的locale修正值. 它的參量的格 式是@分類=賦值. 目前唯一可用的是輸入 服務器的名稱"im". 如果參量為 空, 則根據系統的環境 變量XMODIFIERS查找. 比如在系統上設置了環境變 量:
% setenv XMODIFIERS @im=Chinput (csh) 或 % export XMODIFIERS=im=Chinput (bash)
則客戶程序將查找到輸入服務器Chinput, "Chinput"是 輸入服務器所設置 的名稱.
文化習俗的差別
下面是在國際化和本地化過程中常常遇到的並且應當注意的地方, 對國際化軟件 的開發, 應該充分注意到各個地域的文化和習慣, 開發出通用的軟件, 對於本地 化過程, 則應選擇與本地域相符的習慣.
姓名,地址等特殊信息
姓名中的"姓"和"名"的先後次序, 地址書寫的先後次序 電話號碼的長度等
等
圖標的通用性
圖標是易於接受的用戶界面, 設計時應考慮到地域習慣, 而且圖標上不能有
圖形文字, 否則需要重新設計本地圖標, 並翻譯圖標上的文字.
聲音使用
不適當的聲音或提示可能會引起人的反感. 另外, 聲音 的性別對某些國家
是敏感的.
顏色使用
顏色和色調與民俗有關, 比如紅色在美國表示危險, 在中國 表示喜慶.
紙張尺寸
打印紙的尺寸因地域而不同, 在選擇缺省尺寸時應注意.
鍵盤差別
在鍵盤上的鍵可能因國家而異, 鍵的個數也可能不一樣. 影射關系也不同.
政治因素
在產品設計上, 盡量不要有政治敏感性部分.
(第二章完)
待續
相關鏈接: Linux 國際化本地化和中文化(一)