本節討論一些關於國際化與本土化的一般資訊。
Solaris 9 產品包含已選取語言環境的完整 Unicode 3.1 支援,如 Unicode 和 ISO/IEC 10646 中所定義。Solaris 9 版本是 Sun 國際市場的主要版本。其包括一些新功能。
Solaris 9 作業環境從初期階段開始就已設計成可使用世界上的語言。藉由可插接式、以服務為基礎的全球化方法,Solaris 國際化架構可簡化全球應用程式和語言服務的開發、部署和管理。使用者透過方便、多語言的產品,可獲得 39 種不同語言和 162 種語言環境的支援,包括支援泰文和北印度文所需的複雜文字配置環境,以及阿拉伯文和希伯來文等語言所需的雙向配置環境。
Solaris 國際化架構提供富彈性、可插接式的方法,來處理輸入法、字元集編碼、字碼集轉換和其他語言服務的基本功能。您可以選擇已提供的強大工具,或自訂您的環境。您並不需要知道輸入法是如何運作,或啟用何種字碼集轉換程式,您只需遵循下列標準 API 就可以在多語言環境中部署應用程式。您也可以自訂特殊語言屬性。該架構讓您能夠變更轉換器表格或新增輸入方法編輯程式。
Solaris X 全球化架構的來源碼已在 2000 年秋天正式對外發行。現在您只要遵循一般參照實施,並參與字碼庫的演化,就有能力增強全球應用程式的相容性和相互可操作性。全球化的字碼獨立方法可讓您在當地的編碼環境中作業,或加入 Unicode 不斷成長的世界。Solaris 架構提供了用來確保各種編碼和各種平台 (例如,Microsoft Windows 或 Macintosh) 之相互可操作性的資料轉換程式組,可讓您在各種平台中相互作業。
Solaris 也協助跨國公司將其伺服器管理擴展至世界各地。和其它具競爭性的平台不同,Solaris 平台係透過以服務為基礎的方法來進行語言服務的管理。無論用戶端系統為何,伺服器管理者都可以透過全球網路以遠端方式啟用語言服務。此獨立於用戶端之外的方法,可讓您不需變更用戶端應用程式就能輕鬆地進行系統的升級。例如,說阿拉伯語的使用者在巴黎的網咖閱讀電子郵件時,仍然可以透過他或她的母語來閱讀,而不需修改本機用戶端應用程式。
以下為 Solaris 9 發行版本的新功能。
Unicode 語言環境中的 Latin-3 字元支援。
繁體中文(香港)UTF-8 語言環境(zh_HK.UTF-8 )。
泰國 UTF-8 語言環境(th_TH.UTF-8)。
北印度 UTF-8 語言環境(hi_IN.UTF-8)。
ISCII iconv支援 ISCII 以及 UTF-8 編碼之間轉換的模組。
新的zh_CN.GB18030語言環境以支援新的 GB18030–2000 標準。
新的中文輸入方法。
泰文輸入方法增強。
亞洲 Solaris 的「輸入方法輔助視窗」支援。
歐元貨幣。只有這些使用歐元的語言環境可將歐元符號定義為他們的國幣符號。其他 ISO8859-15 語言環境支援歐元符號。
增強的 Unicode iconv 模組。 iconv 模組已新增並針對各種新的Unicode 格式以及國際化與事實上的工業標準字碼集進行增強。
Unicode 語言環境中的 Unicode 3.1 支援。
ISO8859–16 的新 iconv 字碼轉換支援。
國際化與本土化是不同的過程。是使軟體在語言或區域之間擁有可攜性的過程,而是使軟體適應特定語言或區域的過程。可使用依照特定文化需求修改執行時間程式行為的介面,來開發國際化的軟體。本土化牽涉到建立線上資訊以支援語言或區域,稱之為語言環境。
不像其他的軟體,必須經過完全重寫才能以不同地區的語言和慣例來作業,國際化的軟體並不需要重寫。國際化軟體不需經過變更就可從一種語言環境移入另一種語言環境。Solaris 為國際化的系統,可提供建立國際化軟體所需要的基礎架構和介面。
國際化應用程式的可執行影像可攜帶至各種語言和區域中。若要將軟體國際化,您應該要:
使用本書所說明的介面,並藉由不需重新編譯就可動態修改的環境來建立軟體。
將軟體劃分為可執行字碼與訊息。訊息包括所有使用者可能看到的可以列印與顯示的訊息。將訊息字串保留在訊息目錄中。
訊息字串已針對語言或區域進行翻譯。一個語言環境包括訊息字串與指定排序的方法。
若要使用本土化的產品版本,使用者可設定一些環境變數。然後該產品以其翻譯的類型顯示訊息。根據語言環境的特定慣例格式化並顯示日期、時間、貨幣與其他資訊。可提供不同層級的訊息翻譯和線上輔助說明,如以下圖表所示。
OS 語言環境層提供了基本語言環境資料庫,以及在應用程式執行時間插入至 OS 系統的功能。應用程式經由標準 API 存取這些作業系統語言環境模組。
該 X11 語言環境層提供 X 輸入方法與 X 輸出方法的介面,如此一來 X11 應用程式可允許本機文字輸入與顯示。提供字型以便讓應用程式能夠顯示各種語言的字元。
CDE/Motif 內建於 X11 視窗系統的頂端。因此,其可以經由 X11 API 利用 X11 的語言環境能力。為了讓桌上管理系統能在目標語言環境中正常運作,Solaris 本土化具備了 CDE 應用程式的各種特定語言環境配置。提供不同層級的訊息翻譯與線上輔助說明內容。
應用程式的關鍵性觀念為程式的語言環境。是一個明確的模型以及原生語言環境的定義。語言環境的概念是明確定義的,並包括在「ANSI C 語言」標準的程式庫定義中。
語言環境是由一些種類所組成,其中有國家相依性的格式或其他規格。程式的語言環境可定義自身的字碼集、資料和時間的格式慣例、幣制慣例、十進制的格式慣例,以及分頁 (排序) 順序。
語言環境可以由基本語言所組成,該 使用的國家(地區),以及選擇性的字碼集。通常會假設字碼集。例如,德語為de,為德國的縮寫,而瑞士德語為de_CH,CH為瑞士邦聯的縮寫。它可容許國家間的特定差異,如貨幣單位記號。
超過一個以上的語言環境可與一種特定語言相關聯,且可容許區域性的差異。例如, 一位在美國說英語的使用者可以選取en_US語言環境(美式英語),而另一位在英國說英語的使用者可以選取en_GB(英式英語)。
通常語言環境名稱是藉由LANG環境變數來指定。語言環境種類隸屬於LANG,但是可以個別設定,假使其置換LANG。若是即設定該 LC_ALL運算元,其不但置換LANG,同時也置換所有個別的語言環境種類。
語言環境命名慣例為:
language[_territory][。 codeset] [@modifier]
其中雙字母的 language字碼是來自 ISO 639,雙字母的 territory 字碼是來自 ISO 3166,codeset是使用在語言環境中的字碼集名稱,以及modifier是區分沒有修飾符號的語言環境之特性名稱。
所有 Solaris 產品的語言環境都以 US-ASCII 字碼值保存「可攜字元集」的字元。
若要獲得更多關於「可攜字元集」的資訊,請參閱“X/Open CAE 規格:系統介面定義, 第 5 版” (ISBN 1–85912–186–1)。
單一語言環境可以擁有一個以上的語言環境名稱。例如, POSIX與C相同。
完整的 Solaris 語言環境擁有所有列出的功能以及使用相關語言的本土化系統訊息。部份語言環境沒有安裝本土化的訊息。Solaris 環境中的所有語言環境都可顯示本土化訊息,可為已安裝的相關語言提供本土化訊息。例如,下列語言環境可以是部份或完整語言環境。
de_DE.ISO8859–1
de_DE.ISO8859–15
de_DE.UTF-8
de_AT.ISO8859–1
de_AT.ISO8859–15
de_CH.ISO8859–1
當您使用 Language CD 安裝德文訊息翻譯時,上述所有的語言環境都會變成完整語言環境,因為它們都可存取已完全翻譯的桌上管理系統。Language CD 包含下列語言以及語言環境的訊息翻譯:
德文
法文
西班牙文
瑞典文
義大利文
日文
韓文
簡體中文語言環境
繁體中文語言環境
Software CD 提供了所有的部份語言環境。Language CD 提供了訊息翻譯。
所有英文語言環境也是完整的語言環境,並可取得自 Software CD。
不同的文化通常使用不同的慣例來表示日期和時間、格式數字、字詞分割和引用資料。 語言環境會在系統中決定下列項目的行為:
文字資料的編碼與處理。
識別資源檔案的語言與編碼。
文字字串的描繪與版面配置。
用在用戶端之間文字通訊的交換文字。
選取輸入方法(意即產生哪一個字碼集)以及文字資料的處理。
特定文化的字型與圖示檔案。
動作與檔案類型
使用者介面定義(UID)檔案。
日期與時間格式。
數值格式。
貨幣格式。
排序順序。
語言環境的特定正規表示式處理。
資訊以及診斷訊息的格式,與互動回應。
Solaris 環境會將和語言及文化相關的資訊與應用程式分隔開來,並將其儲存在應用程式之外。如此將不再需要針對每個市場來翻譯、重寫或重新編譯應用程式。進入新市場的唯一需求就是將外部資訊本土化為當地的語言和慣例。
語言環境的種類如下所示:
控制字元處理功能的行為。
指定日期和時間的格式,包括月份名稱、一星期的天數,以及一般完整和縮寫的表示法。
指定幣制格式,包括語言環境的貨幣符號、以千計分隔符號、記號位置、分數數字等。
指定十進制分割元(或基數字元)、以千計分隔符號以及群組化。
指定字元排序順序,以及語言環境的正規表示式定義。
指定本土化訊息、語言環境的肯定、否定回應 (yes 和 no 字串和表示式)的語言要用哪種語言。
指定提供關於語言描繪資訊的版面配置引擎。語言描繪(或文字描繪)是由文字具體化與定向性所組成。
在進行產品的本土化時,必須徵詢目標語言或地區的當地使用者。 某些資訊的樣式和格式對開發者來說似乎是很清楚及明白的,但在使用者看來可能會顯得相當艱深、錯誤百出,甚至會引起使用者的反感。以下章節說明了您可在 Solaris 作業環境中加以控制及指定的元素,以協助您成功地進行產品的本土化。
下表顯示了不同語言環境表示下午 11:59 的方法。
表 1–1 國際化時間格式
語言環境 |
格式 |
---|---|
加拿大 |
23:59 |
芬蘭文 |
23.59 |
德文 |
23.59 Uhr |
挪威文 |
23.59 |
泰文 |
23:59 |
英國 |
23:59 |
時間將同時以 12 小時時鐘以及 24 小時時鐘來表示。小時與分鐘的分隔符號可以是冒號(:)或句號(.)。
時區分割發生於國家之間與國家內部。雖然可依據之前時數或之後時數、協調的格林威治標準時間,UTC (或「格林威治標準時間」,GMT) 來表示一個時區,但這個數字並不一定是整數。例如,紐芬蘭位於與鄰近時區相異半小時的時區中。
「日光節約時間」(DST)開始並結束在不同的日期,其在各國之間都有可能不同。許多國家根本不實施 DST。 此外,同時區內的「日光節約時間」也會不同。在美國,由各州自行決定之。
下表將列出一些已通行於世界的日期格式。請注意,即使在同一個國家內仍會出現差異。
表 1–2 國際日期格式
語言環境 |
慣例 |
範例 |
---|---|---|
加拿大(英文) |
dd/mm/yy |
24/08/01 |
丹麥文 |
yyyy-mm-dd |
2001–08–24 |
芬蘭文 |
dd.mm.yyyy |
24.08.2001 |
法文 |
dd/mm/yyyy |
24/08/2001 |
德文 |
yyyy-mm-dd |
2001–08–24 |
義大利文 |
dd/mm/yy |
24/08/01 |
挪威文 |
dd-mm-yy |
24–08–01 |
西班牙文 |
dd-mm-yy |
24-08-01 |
瑞典文 |
yyyy-mm-dd |
2001-08-24 |
英文 |
dd/mm/yy |
24/08/01 |
美國 |
mm-dd-yy |
08-24-01 |
泰文 |
dd/mm/yyyy |
24/08/2001 |
英國和美國為少數使用句號來表示十進制處的兩個地區。許多其他的國家使用逗號來替代。十進制分隔符號也稱做是基數字元。同樣的,當英國和美國使用逗號來分隔千位組時,許多其他的國家則使用句號來代替,一些國家則是使用狹窄空間來分隔千位組。
當傳輸包含特定語言環境格式的資料檔案至另一個使用不同語言環境的系統時,常常發生解譯錯誤的情形。例如,包含法文格式數字的檔案就不能用在特定的英文程式。
表 1–3 國際化數值慣例
語言環境 |
龐大數字 |
---|---|
加拿大 (英文) |
4,294,967.00 |
丹麥文 |
4.294 967.295,00 |
芬蘭文 |
4 294 967 295,00 |
法文 |
4 294 967 295,00 |
德文 |
4,294,967.00 |
義大利文 |
4.294.967,00 |
挪威文 |
4.294.967.295,00 |
西班牙文 |
4.294.967.295,00 |
瑞典文 |
4 294 967 295,00 |
英國 |
4,294,967,295.00 |
美國 |
4,294,967,295.00 |
泰文 |
4,294,967,295.00 |
並沒有哪一種特別的語言環境慣例會指定如何分隔清單中的數值。
貨幣單位與表示次序在世界各地都有很大的不同。貨幣的本土與國際符號可能有所不同。下列表格顯示某些國家的貨幣格式。
表 1–4 國際幣制慣例
語言環境 |
貨幣 |
範例 |
---|---|---|
加拿大 (英文) |
美元 ($) |
$1,234.56 |
加拿大(法文 |
美元 ($) |
1 234,56$ |
丹麥文 |
克羅納 (kr) |
Kr 1.234,56 |
芬蘭文 |
歐元() |
1 234,56 |
法文 |
歐元 () |
1,234 |
日文 |
日圓(¥) |
¥ 1,234 |
挪威文 |
克羅納 (kr) |
kr 1.234,56 |
瑞典克羅納 |
克朗 (Kr) |
1 234,56 Kr |
英國 |
英磅(£) |
£1,234.56 |
美國 |
美元 ($) |
$1,234.56 |
泰文 |
銖 |
2539 銖 |
歐元 |
歐元 () |
5,000 |
Solaris 9 軟體支援歐元貨幣。本土貨幣符號仍然可以使用以提供回溯相容性。
表 1–5 支援歐元貨幣的使用者語言環境
區域 |
語言環境名稱 |
ISO 字碼集 |
---|---|---|
奧地利 |
de_AT.ISO8859-15 |
8859-15 |
比利時(法文) |
fr_BE.ISO8859-15 |
8859-15 |
比利時(法蘭德斯語) |
nl_BE.ISO8859-15 |
8859-15 |
丹麥 |
da_DK.ISO8859-15 |
8859-15 |
芬蘭 |
fi_FI.ISO8859-15 |
8859-15 |
法國 |
fr_FR.ISO8859-15 |
8859-15 |
德國 |
de_DE.ISO8859-15 |
8859-15 |
愛爾蘭 |
en_IE.ISO8859-15 |
8859-15 |
義大利 |
it_IT.ISO8859-15 |
8859-15 |
荷蘭 |
nl_NL.ISO8859-15 |
8859-15 |
葡萄牙 |
pt_PT.ISO8859-15 |
8859-15 |
嘉泰羅尼亞西班牙文 |
ca_ES.ISO8859-15 |
8859–15 |
愛沙尼亞 |
et_EE.ISO8859–15 |
8859–15 |
西班牙 |
es_ES.ISO8859-15 |
8859-15 |
瑞典 |
sv_SE.ISO8859-15 |
8859-15 |
英國 |
en_GB.ISO8859-15 |
8859-15 |
美國 |
en_US.ISO8859-15 |
8859-15 |
歐元的語言環境是以 ISO8859–15 字碼集做為基礎。
請記住已轉換的貨幣數量可能佔用比原始數量更多或更少的空間。若要說明: $1,000 可能變成1.307.000。
歐元地區語言環境的目前環境設定狀態是以 locale 公用程式的 LC_MONETARY 運算元來表示。例如,下表顯示了德國的狀態。
表 1–6 德文語言環境以及相對應的LC_MONETARY
語言環境 |
LC_MONETARY |
---|---|
de_DE.ISO8859–1 |
DM |
de_DE.ISO8859–15 |
歐元 |
de_DE.UTF-8 |
歐元 |
de_DE.ISO8859–15@euro |
歐元 |
de_DE.UTF-8@euro |
歐元 |
本節說明語言之間重要的差異。
在英文中,文字通常使用空間字元來分隔。不過,在中文、日文,和泰文等語言中,兩個文字之間並沒有分隔。
特定字元的排序順序在每個語言中各有不同。例如,在德文中,“ö” 字元是以一般的 “o” 排序, 但在瑞典則是分別排序,其中該字元為字母中的最後一個字。在某些語言中,字元有其重要性以決定字元序列的優先順序。例如,泰文字典中會根據不同的重要性來對字元的順序進行排序。
字元集在字母字元以及特殊字元的編號上會有所不同。當英文字母表只包含 26 個字元時,某些語言包含多出更多的字元。例如,日文,可能包含超過 20,000 個字元,而中文可能包含甚至更多的字元。
大部分西方國家的字母和英語系國家所使用的標準 26 個字母相似,但通常會出現一些附加的基本字元、一些標記 (或重音) 字元,和一些連音符號。
日語文字是由三種不同的字體混合在一起所組成。 包括源自中國的表意漢字,和兩種稱為平假名和片假平的表音字串 (或音節文字)。
雖然每個平假名中的字元都有一個對等的片假名字元,但平假名仍是最常見的字串,它是一種草寫字母而不是區塊狀的字母格式。漢字字元用來撰寫字根。片假名通常用來表示“外來”文字,也就是從日文以外的語言所“輸入” 的文字。
漢字擁有數萬個字元,但是經常使用的數目正逐年穩定的減少當中。雖然一般的日本人平均擁有 2000 個漢字的能力,但現在仍經常使用的漢字大約只剩 3500 個。不過,為了符合日本業界標準 (JIS),電腦系統必須支援超過 7000 個字。另外,還有大約 170 個平假名以及片假平字元。平均而言,55% 的日語文字為平假名,35% 是漢字以及 10% 為片假名。在日語文字中也會出現阿拉伯數字與羅馬字母。
雖然可以完全避免使用漢字,但大部分的日本人發現,若缺少了漢字文件將變的難以理解。
可以使用一種稱為 Hangul 的語音寫入系統來撰寫韓語文字。Hangul 擁有超過 11,000 個字元,其是由已知的 jamos 子音與母音所組成。全部的 Hangul 字彙中大約有 3000 字元為韓文電腦系統中所經常使用。韓國人也使用源自於中國文字的表意文字,稱為 hanja。韓語文字需要超過 6000 個 hanja 字元。當使用 Hangul 會造成語意不清時,大部份都是用 Hanja 來避免混淆。Hangul 字元是藉由合併子音與母音所形成。在將其合併之後,可以組成一個 Hangul 字元音節。Hangul 字元通常會呈現方塊狀,使其所佔的空間和 hanja 字元相同。在韓語文字中也會出現阿拉伯數字、羅馬字母以及特殊符號字元。
泰文字元是以四個顯示儲存格在顯示螢幕上定義為一個欄位位置 。每個欄位位置最多可以有三個字元。顯示儲存格的構成是以泰文字元分類為基礎。某些泰文字元可能是由另一個字元分類所組成。若是其可以組合在一起,則兩種字元位於相同的儲存格中。否則,其位於分隔的儲存格中。
中文幾乎全由稱為漢字的表意字串所組成。
在中華人民共和國(PRC),通常在 GB2312 中(zh 語言環境)會使用約 7000 個漢字字元、在 GBK 字元集(zh.GBK 語言環境)中則使用超過 20,000 個字元,在 GB18030-2000 字元集( zh_CN.GB18030 語言環境)中則使用超過 30,000 個字元,其中包括了所有於 Unicode 3.0 定義的 CJK 延伸 A 字元。
在台灣,最常使用的字元集為 CNS11643-1992(zh_TW 語言環境)以及 Big5(zh_TW.BIG5 語言環境)。其共用大約 13,000 個漢字字元。
在香港,已新增 4702 字元至 Big5 字元集中以變成 Big5-HKSCS 字元集(zh_HK.BIG5HK)。
如果字元並不是根字元,則它通常是由兩個或更多部分所組成,兩個為最常見。在兩部分的字元中,其中一個部分是用來表意,而另一個則用來表音。 偶爾兩部份同時用來表意。部首為最重要的元素,而字元通常也是以部首來編排,部首的數量約為數百個。單一音調可以藉由許多不同的字元來表示,這些字元在用法上無法互相交換。單一字元可以擁有不同的音調。
在指定的上下文中某些字元比其他字元較為合適—藉由使用音調以便在發音上區分該合適的字元。相比之下,日文與韓文口語中並沒有音調。
有幾個語音的系統代表中文。在中華人民共和國中最普遍的是拼音,其使用羅馬字元並廣泛的在西方針對地名使用,例如 Beijing。威妥系統是較古老的語音系統,從前使用在地名上,像是 Peking。在台灣注音(或ㄅㄆㄇㄈ)通常使用唯一字母類型的語音字母表來替代。
希伯來語文字 是用來撰寫希伯來語及猶太語言的字體,並在時間上早於英語數千年。希伯來文為雙向字串的一個範例,希伯來文的字母是以由右至左的方向讀寫,數字則是由左至右。任何內嵌於希伯來語文字中的英語文字也是從左向右閱讀。
希伯來文使用 27 字元的字母,並採用標準拉丁文 (或英文) 字母中的發音標記和數字。希伯來語文字也包括母音與發音符號。這些標記是以基本字元中的點 (Dagesh) 、字元下的母音標記,或字元左上角的重音來表顯示。這些符號一般只使用在禮拜儀式文字中,並在日常使用中很少見。希伯來文中也沒有大寫字母。
北印度語文字 是以稱為 Devanagari 的字體所撰寫,其意思為 "上帝的寫作"。北印度文是語音語言,並且撰寫為一連串的音節。每一個音節是由三種類型的字母片斷(Devanagari 字元)所組成:子音字母、獨立的母音以及相依的母音符號。音節本身是由一個子音和母音核所組成,並附帶一個選擇性的前置子音。不像英文是從基準線開始,Devanagari 字元是從寫在字元最上方的水平線 (稱為前筆畫) 垂下。這些字元可根據上下文來結合或變更外形。如同希伯來文,北印度語文字在大寫或小寫字母之間沒有區別。
並非所有美式鍵盤上的字元都會出現在其他鍵盤上。同樣地,其他鍵盤通常包含許多在美式鍵盤上不會看到的字元。
在 SPARCTM 機器上,撰寫鍵可用來在任何支援的 ISO8859 字元集中產生帶有區別符號的拉丁字元。
撰寫鍵可以用在以 Latin 為基礎的語言環境,但是不能用在韓文、中文或日文語言環境,而 UTF-8 語言環境例外。
可以使用任何鍵盤從任何語言環境輸入字元,因為輸入是由 Solaris 作業環境所處理。
每個國家所使用的紙張大小種類並不多。通常只有一種紙張大小會比其他的大小較為普遍。大部份的國家都遵循 ISO 標準 216: “寫入紙張以及某些類別的列印事務-整齊的大小-A 與 B 系列。”
國際化應用程式不應假設可用的頁面大小。Solaris 系統並不提供追蹤輸出頁面大小的支援。追蹤為應用程式的責任。下表顯示一般國際頁面大小
表 1–7 一般國際化頁面大小
紙張類型 |
大小 |
國家 |
---|---|---|
ISO A4 |
21.0 公分乘 29.7 公分 |
除了美國之外的所有地區 |
ISO A5 |
14.8 公分乘 21.0 公分 |
除了美國以外的所有地方 |
JIS B4 |
25.9 公分乘 36.65 公分 |
日本 |
JIS B5 |
18.36 公分乘 25.9 公分 |
日本 |
U.S. Letter |
8.5 英吋乘 11 英吋 |
美國和加拿大 |
U.S. Legal |
8.5 英吋乘 14 英吋 |
美國與加拿大 |