國際語言環境指南

第 1 章 Solaris 國際化概述

本章將說明 Solaris 國際化和本土化的新功能與關鍵概念。本章包含以下主題。

關於 Solaris 國際化架構

目前 Solaris 發行版本有許多新功能,包括 UTF-8 語言環境的 Unicode 4.0 支援、增強型鍵盤支援以及多項 mp 列印過濾器改良功能。

透過 Solaris 國際化架構,您可以輕鬆地開發、部署以及管理全球的應用程式和語言服務。此單一多國語言產品提供了 39 種語言和 162 個語言環境的支援。此外,可以支援泰文和北印度文字體所需的複雜文字版面配置。也有支援阿拉伯文和希伯來文等語言的雙向文字能力。

支援許多不同 Solaris 語言環境的輸入法、字元集、字碼集轉換以及其他與語言有關的功能。您可以使用下列標準 API,在多重語言環境中部署應用程式。您也可以在 Solaris 環境中自訂語言屬性、變更轉換器表格或增加新的輸入法編輯器。

Solaris X 全球化架構的原始碼,已在 2000 年秋天釋出到開放原始碼社群。此舉讓您得以遵循一個共同參考介面,來增強全球化應用程式的相容性與互通性。字碼集獨立的全球化方法,讓您在原生語言和 Unicode 語言環境中都可以作業。Solaris 架構提供擴展至各平台的能力。豐富的資料轉換集確保了多種編碼與不同協力廠商平台之間的互通性。

Solaris 平台也使得跨國公司將其伺服器管理擴展至世界各地。與其他相競爭的平台不同,Solaris 平台是透過以服務為基礎的方法來進行語言服務的管理。無論用戶端系統為何,伺服器管理者都可以透過全球網路以遠端方式啟用語言服務。此獨立於用戶端之外的方法,讓您無須變更用戶端應用程式即可進行系統升級。例如,使用者不必為了讀取從巴黎網咖寄來的阿拉伯文電子郵件,而變更本機的用戶端應用程式。

新的國際化與本土化功能

在目前 Solaris 發行版本中包含下列新功能:

國際化與本土化概述

國際化與本土化是不同的過程。國際化是使軟體可在各種語言或區域之間流通的程序,而本土化是針對特定語言或區域改寫軟體的程序。可使用依照特定文化需求修改執行時間程式行為的介面,來開發國際化的軟體。本土化牽涉到建立線上資訊以支援語言或區域,稱之為語言環境

不像其他的軟體,必須經過完全重寫才能以不同地區的語言和慣例來作業,國際化的軟體並不需要重寫。國際化軟體不需經過變更就可從一種語言環境移入另一種語言環境。Solaris 為國際化的系統,可提供建立國際化軟體所需要的基礎架構和介面。

國際化的基本步驟

國際化應用程式的可執行影像可攜帶至各種語言和區域中。若要將軟體國際化:

訊息字串已針對語言或區域進行翻譯。一個語言環境包括訊息字串與指定排序的方法。

若要使用產品的已本土化版本,使用者必須設定部分環境變數。該產品才能夠顯示已轉譯為該語言環境之語言的訊息。日期、時間、貨幣以及其他資訊都會根據特定語言環境的轉換來進行格式化與顯示。可提供不同層級的訊息翻譯和線上說明內容,如以下圖表所述。

圖 1–1 Solaris 作業系統中語言環境的功能與結構

前面的文字內容說明該圖形。

Solaris 介面中的本土化功能

OS (作業系統) 語言環境層提供了基本語言環境資料庫以及在應用程式執行時間插入至 OS 系統的功能。應用程式經由標準 API 存取這些作業系統語言環境模組。

該 X11 語言環境層提供 X 輸入方法與 X 輸出方法的介面,給 X11 應用程式用於本機文字輸入與顯示。字型可使應用程式顯示各種語言的字元。

CDE/Motif 內建於 X11 視窗系統的頂端。因此,CDE/Motif 可以透過 X11 API 來使用 X11 語言環境能力。為了讓桌上管理系統能在目標語言環境中正常運作,Solaris 本土化具備了 CDE 應用程式的各種特定語言環境配置。提供不同層級的訊息翻譯與線上說明內容。

何謂語言環境?

應用程式的關鍵概念就是程式的語言環境。語言環境是原生語言環境的明確模組與定義。語言環境的概念是明確定義的,並包括在「ANSI C 語言」標準的程式庫定義中。

語言環境是由一些種類所組成,包括依賴於國家的格式或其他規格。程式的語言環境可定義自身的字碼集、資料和時間的格式慣例、幣制慣例、十進制的格式慣例以及分頁 (排序) 順序。

語言環境可由基礎語言、使用的國家 (地區)以及可選字碼集來組成。通常會假設字碼集。例如,德語為 de,為德國的縮寫,而瑞士德語為 de_CHCH 為瑞士邦聯的縮寫。此轉換可容許國家間的特定差異,如貨幣單位記號。

超過一個以上的語言環境可與一種特定語言相關聯,且可容許區域性的差異。例如,一位在美國說英語的使用者可以選取 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 Specification:System Interface Definitions, Issue 5」(ISBN 1–85912–186–1)。

單一語言環境可以擁有一個以上的語言環境名稱。例如,POSIX 是與 C 相同的語言環境。

C 語言環境 - 預設語言環境

C 語言環境也稱為 POSIX 語言環境,是所有 POSIX 相容系統的 POSIX 系統預設語言環境。Solaris 作業系統即是 POSIX 系統。「單一 UNIX 規格」第 3 版中定義了 C 語言環境。請前往下列網址註冊,以便閱讀和下載此規格:http://www.unix.org/version3/online.html

您可以透過下列兩種方法其中之一,指定您的國際化程式執行於 C 語言環境:

若要在終端機環境中檢查目前的語言環境設定,請執行 locale(1) 指令。

system% locale

完整與部份語言環境

完整的 Solaris 語言環境擁有所有列出的功能以及使用相關語言的本土化系統訊息。部份語言環境沒有安裝本土化的訊息。Solaris 環境中的所有語言環境都可顯示本土化訊息,可為已安裝的相關語言提供本土化訊息。例如,下列語言環境可以是部分或完整語言環境:

當您從 Languages CD 安裝德文訊息翻譯時,上述所有的語言環境都會變成完整語言環境,因為它們都可存取已完全翻譯的桌上管理系統。Languages CD 包含下列語言以及語言環境的訊息翻譯:

Software CD 提供了所有的部份語言環境。Language CD 提供了訊息翻譯。

所有英文語言環境也是完整的語言環境,並可自 Software CD 取得。

受語言環境影響的行為

不同的文化通常使用不同的數字格式慣例,來填寫日期和時間、劃分字詞和片語或引用文章和演講資料。語言環境會決定如何處理不同區域的下列作業、檔案、格式和表示式:

Solaris 環境會將和語言及文化相關的資訊與應用程式分隔開來,並將資訊儲存在應用程式之外。此方法將不再需要針對每個市場來翻譯、重寫或重新編譯應用程式。進入新市場的唯一需求就是將外部資訊本土化為當地的語言和慣例。

語言環境的種類

語言環境的種類如下:

LC_CTYPE

控制字元處理功能的行為。

LC_TIME

指定日期和時間的格式,包括月份名稱、一星期的天數以及一般完整和縮寫的表示法。

LC_MONETARY

指定幣制格式,包括語言環境的貨幣符號、以千計分隔符號、記號位置、分數數字等。

LC_NUMERIC

指定十進制分割元 (或基數字元)、以千計分隔符號以及群組化。

LC_COLLATE

指定字元排序順序以及語言環境的常規表示式定義。

LC_MESSAGES

指定本土化訊息、語言環境的肯定與否定回應 (yes no 字串和表示式) 所使用的語言。

LO_LTYPE

指定提供關於語言描繪資訊的版面配置引擎。語言描繪 (或文字描繪) 取決於字體的外形和方向屬性。

為本土化使用語言環境種類

在進行產品的本土化時,必須徵詢目標語言或地區的當地使用者。對於開發人員來說,某些資訊樣式和格式看來平淡無奇且經常使用。然而,對使用者來說,這些格式看來可能是棘手、錯誤,甚或是討厭的。下列章節說明在 Solaris 作業系統中,您可以根據產品本土化需求而自訂的元素。

時間格式

下表顯示數種不同語言環境填寫 11:59 P.M. 的方式。

表 1–2 國際化時間格式

語言環境 

格式 

加拿大 

23:59 

芬蘭文 

23.59 

德文 

23.59 Uhr 

挪威文 

23.59 

泰文 

23:59 

英文 

23:59 

時間將同時以 12 小時時鐘以及 24 小時時鐘來表示。小時與分鐘的分隔符號可以是冒號 (:) 或句號 ( .)。

國家之間或國家之中有時區劃分。雖然可依據之前時數或之後時數、協調的格林威治標準時間,UTC (或「格林威治標準時間」,GMT) 來表示一個時區,但這個數字並不一定是整數。例如,紐芬蘭位於與鄰近時區相異半小時的時區中。

夏令時 (DST) 的起迄日期依各國情況而有所不同。許多國家根本不實施 DST。此外,同一時區中的夏令時也不盡相同。以美國為例,夏令時乃是依照州政府規定實施。

日期格式

下表顯示全球使用的數種日期格式。同一個國家中可能存在多種日期格式。

表 1–3 國際日期格式

語言環境 

慣例 

範例 

加拿大 (英文) 

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–4 國際化數值慣例

語言環境 

龐大數字 

加拿大 (英文) 

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–5 國際幣制慣例

語言環境 

貨幣型 

範例 

加拿大 (英文) 

美元 ($) 

$1,234.56 

加拿大 (法文) 

美元 ($) 

1 234,56$ 

丹麥文 

克羅納 (kr) 

Kr 1.234,56 

芬蘭文 

歐元 (Graphic)

Graphic1 234,56

法文 

歐元 (Graphic)

Graphic1,234

日文 

日圓 (¥) 

¥ 1,234 

挪威文 

克羅納 (kr) 

kr 1.234,56 

瑞典文 

克朗 (Kr) 

1 234,56 Kr 

英國 

英鎊 (£) 

£1,234.56 

美國 

美元 ($) 

$1,234.56 

泰文 

Baht 

2539 Baht 

歐元 

歐元 (Graphic)

Graphic5,000

目前發行版本支援歐元貨幣。本土貨幣符號仍然可以使用以提供回溯相容性。

表 1–6 支援歐元貨幣的使用者語言環境

區域 

語言環境名稱 

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 

愛沙尼亞 

et_EE.ISO8859-15

8859-15 

芬蘭 

fi_FI.ISO8859-15

8859-15 

法國 

fr_FR.ISO8859-15

8859-15 

德國 

de_DE.ISO8859-15

8859-15 

英國 

en_GB.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 

西班牙 

es_ES.ISO8859-15

8859-15 

瑞典 

sv_SE.ISO8859-15

8859-15 

美國 

en_US.ISO8859-15

8859-15 

歐元的語言環境是以 ISO8859-15 字碼集為基礎。

請注意,轉換後的貨幣數目所需要的空格數可能與原始空格數不同,例如,$1,000 可能變為Graphic1.307.000。

歐元地區語言環境的目前環境設定狀態是 locale 公用程式的 LC_MONETARY 運算元來表示。例如,下表顯示了德國的狀態。

表 1–7 德文語言環境以及相對應的 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 字元相同。在韓語文字中也會出現阿拉伯數字、羅馬字母以及特殊符號字元。

泰文文字

泰文字元是以四個顯示格在顯示螢幕上定義為一個欄位位置 。每個欄位位置最多可以有三個字元。顯示格的構成是以泰文字元分類為基礎。某些泰文字元可能是由另一個字元分類所組成。若是兩種字元可以組合在一起,則兩種字元會位於同一個顯示格中。否則,其位於分隔的顯示格中。

中文文字

中文幾乎全由稱為漢字的表意字體中的字元所組成。

如果字元並不是根字元,則它通常是由兩個或更多部分所組成,兩個為最常見。在兩部分的字元中,其中一個部分是用來表意,而另一個則用來表音。偶爾兩部份同時用來表意。部首為最重要的元素,而字元通常也是以部首來編排,部首的數量約為數百個。單一音調可以藉由許多不同的字元來表示,這些字元在用法上無法互相交換。單一字元可以擁有不同的音調。

部分字元比其他字元更相稱於給定的文意。此相稱字元使用音調來作語音上的區別。相比之下,日文與韓文口語中並沒有音調。

有數種語音系統可用來表示中文。在中華人民共和國最普遍的是拼音,其使用羅馬字元,並廣泛的在西方針對地名使用,例如 Beijing (北京)。威妥系統是較古老的語音系統,從前使用在地名上,像是 Peking。在台灣則是使用注音 (或 ㄅㄆㄇㄈ),這種具有獨特文字形式的語音字母來取代拼音。

希伯來文文字

希伯來文文字是用來書寫希伯來文與意第緒文語言的字體。希伯來文使用雙向字體。希伯來文字母是從右向左書寫和閱讀,而數字是從左向右閱讀的。任何內嵌於希伯來語文字中的英語文字也是從左向右閱讀。

希伯來文使用 27 字元的字母,並採用標準拉丁文 (或英文) 字母中的發音標記和數字。希伯來文文字也包括母音與發音符號。這些標記是以基本字元中的點 (dagesh)、字元下的母音標記或字元左上角的重音來表示。這些符號一般只使用在禮拜儀式文字中,在日常使用中很少見。希伯來文沒有大寫字母。

北印度文文字

北印度文文字是以梵文字母 (稱為 Devanagari) 書寫的,其意為「上帝的寫作」。北印度文是語音語言,並且撰寫為一連串的音節。每一個音節是由三種類型的字母片斷 (梵文字母字元) 所組成:子音字母、獨立的母音以及具依賴性的母音符號。音節本身是由一個子音和母音核所組成,並附帶一個選擇性的前置子音。不像英文是從基準線開始,Devanagari 字元是從寫在字元最上方的水平線 (稱為前筆畫) 垂下。這些字元可根據上下文來結合或變更外形。如同希伯來文,北印度文文字在大寫與小寫字母之間沒有區別。

鍵盤差異

美式鍵盤上的所有字元不會都出現在其他鍵盤上。同樣地,其他鍵盤通常包含許多在美式鍵盤上不會看到的字元。

您可以使用任何鍵盤從任何語言環境輸入字元,因為輸入是由 Solaris 作業系統所處理的。


注意 –

在 SPARC® 機器上,Compose 鍵可用來在任何支援的 ISO8859 字元集中產生帶有區別符號的拉丁字元。Compose 鍵可以用在以 Latin 為基礎的語言環境,但是不能用在韓文、中文或日文語言環境,而 UTF-8 語言環境例外。


紙張大小的差異

在每個國家中,普遍使用小號的紙張大小。通常只有一種紙張大小會比其他的大小較為普遍。大部份的國家都遵循 ISO 標準 216:「寫入紙張以及某些類別的列印事務-整齊的大小-A 與 B 系列。」

國際化應用程式不應假設可用的頁面大小。Solaris 系統並不提供追蹤輸出頁面大小的支援。追蹤輸出頁面大小是應用程式的責任。下表顯示一般國際頁面大小。

表 1–8 一般國際化頁面大小

紙張類型 

大小 

國家 

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 英吋 

美國和加拿大