共用方式為


NLS 術語

本主題定義使用 NLS 功能時很重要的詞彙。

地區設定和語言詞彙

下表摘要說明地區設定和語言詞彙。 請參閱 地區設定和語言

語言群組 非 Unicode 程式的語言 標準和格式
用途 提供作系統針對一組語言所需的所有鍵盤配置、輸入法編輯器(IME)、TrueType 字型、字型連結、授權套件檔案(LPK)、點圖字型和代碼頁翻譯表。 因此,會影響此清單中所有其他設定。 判斷作系統的預設點圖字型,以及 OEM、ANSI 和 Macintosh 代碼頁。 此語言只會影響未完全 Unicode 的應用程式。 在 Windows XP 之前,此語言稱為「系統地區設定」。 決定將日期、時間、貨幣和數位格式化為每個用戶的預設設定。 也會決定排序文字的排序順序。 在 Windows XP 之前,標準和格式稱為「用戶地區設定」。
第一組 安裝 安裝 安裝
使用者如何變更 區域選項 (控制面板專案)
Windows XP: 地區和語言選項
(僅限系統管理員)
區域選項 (控制面板專案)
Windows XP: 地區和語言選項
(僅限系統管理員)
區域選項 (控制面板專案)
Windows XP: 地區和語言選項
預設 西歐和美國和語言群組必須顯示當地語系化版本的語言。 當地語系化版本的語言。 當地語系化作系統的語言。
函式 EnumSystemLanguageGroups GetSystemDefaultLangID GetUserDefaultLCIDGetUserDefaultLocaleName

 

線程地區設定 輸入語言 系統預設UI語言
用途 決定用於格式化線程日期、時間、貨幣和大量數字的設定。 也會決定排序文字的排序順序。 由語言和輸入方法所組成。 決定功能表和對話框、訊息、設定資訊 (INF) 檔案和說明檔的預設語言。
Windows Vista 和更新版本: 稱為安裝語言。 扮演更有限的角色,主要是由系統慣用的UI語言取代。
如需詳細資訊,請參閱 用戶介面語言管理
第一組 預設為標準和格式 安裝 安裝
使用者如何變更 SetThreadLocale 區域選項 (控制面板專案)
Windows XP: 地區和語言選項
預設 標準和格式 具有預設輸入法的當地語系化版本語言。 當地語系化版本的語言。
函式 GetThreadLocale GetKeyboardLayout GetSystemDefaultUILanguage

 

系統UI語言、系統慣用UI語言 使用者 UI 語言、使用者慣用 UI 語言 線程慣用UI語言
用途 決定作系統的功能表和對話框、訊息、INF 檔案和說明檔的語言。 如需詳細資訊,請參閱 使用者介面語言管理 決定使用者功能表和對話框、訊息和說明檔的語言。 如需詳細資訊,請參閱 使用者介面語言管理 Windows Vista 和更新版本: 指定應用程式線程的慣用語言。 如需詳細資訊,請參閱 使用者介面語言管理
第一組 預設值為 NULL 預設值為 NULL 預設值為 NULL
使用者如何變更 地區和語言選項
(僅限系統管理員)
區域選項 (控制面板專案)
Windows XP: 地區和語言選項
SetThreadPreferredUILanguages
預設 Windows Vista 和更新版本: 當地語系化版本的語言,後面接著任何後援。 Windows Vista 之前: 當地語系化版本的語言。
Windows Vista 和更新版本: 當地語系化版本的語言,後面接著任何後援。
Null 清單
函式 GetSystemPreferredUILanguages GetUserDefaultUILanguageGetUserPreferredUILanguages GetThreadPreferredUILanguages

 

處理慣用UI語言
用途 Windows 7 和更新版本: 決定應用程式程式的慣用語言。 如需詳細資訊,請參閱 使用者介面語言管理
第一組 預設值為 NULL
使用者如何變更 地區和語言選項(僅限系統管理員)
預設 Windows 7 和更新版本: 當地語系化版本的語言,後面接著任何後援。
函式 GetProcessPreferredUILanguagesSetProcessPreferredUILanguages

 

代碼頁

256 個字碼點代碼頁無法支援在單一文字中混合腳本,是 Unicode 崛起的主要原因之一。 代碼頁對於撰寫控制台程式代碼、維護舊版應用程式或在舊版 Windows 上執行,以及與未啟用 Unicode 的一些非Microsoft軟體進行互動,都很重要。

輸入語言

輸入語言是由每個進程數據變數來表示,該變數會描述語言(例如希臘文)和輸入法(例如鍵盤)。 您可以安裝多個輸入語言,而且用戶可以在它們之間切換。

若要設定和擷取輸入語言值,應用程式會分別 呼叫 loadKeyboardLayoutGetKeyboardLayout。 使用者可以透過 [控制面板] 區域和語言選項部分中的 [語言] 索引卷標來新增和移除輸入語言。

默認輸入語言是作系統的當地語系化語言,它是啟動新應用程式時作用中的設定(或為某些應用程式開啟新視窗時)。 切換至不同的輸入語言是以個別應用程式為基礎完成。 換句話說,兩種不同的輸入語言可用於兩個不同的應用程式中。 例如,使用者可以使用國際美國鍵盤配置、使用語音輸入(使用非Microsoft軟體)輸入德文,以及在三個不同的應用程式中使用 IME 輸入西班牙文。

非 Unicode 程式的語言

非 Unicode 程式的語言(先前稱為「系統地區設定」)預設會決定作系統上使用的代碼頁。 非 Unicode 程式設定的語言只會影響非 Unicode 應用程式,也就是 ANSI 應用程式。 設定語言會指示 Windows 模擬非 Unicode 型作系統,並當地語系化為此語言。 變更非 Unicode 程式的語言會安裝必要的位圖字型檔案,以支援指定語言的非 Unicode 應用程式。 若要允許使用者選取非 Unicode 程式的語言,必須安裝適當的語言群組。 您的應用程式需要腳本支援,才能選取非 Unicode 程式的語言。 非 Unicode 程式的語言是個別系統設定,需要重新啟動才能實作。

有時候,非 Unicode 程式兩種語言之間沒有明顯的差異。 例如,這是德文(中性)和德文(奧地利)地區設定的情況。 一般而言,一個語言群組的設定非常類似,而且只與 OEM 或 MAC 代碼頁不同。

ANSI 應用程式應該在安裝期間檢查非 Unicode 程式設定的語言。 它會使用 getACPGetOEMCP 來擷取值。 不支援任何函式來設定非 Unicode 程式的語言。 不過,使用者可以使用 [控制面板] 區域和語言選項部分中的 [進階] 索引標籤來變更它。 以下是非 Unicode 程式設定的一些語言範例:

  1. 想要執行針對日文 Windows 95 設計的日文應用程式,德文用戶必須選取日文作為非 Unicode 程式的語言。 在此選取之後,非 Unicode 德文應用程式有問題。 例如,未正確顯示德文 umlauts (Au) 。
  2. 想要在非 Unicode 德文應用程式中輸入日文文字的德文用戶,必須選取日文作為非 Unicode 程式的語言。 如同第一個範例,這會導致在非 Unicode 應用程式中輸入德文文字時發生問題。
  3. 想要在非 Unicode 阿拉伯文應用程式中輸入阿拉伯文、法文和英文的阿拉伯文使用者應選取阿拉伯文作為非 Unicode 程式的語言,因為阿拉伯文 ANSI 代碼頁包含大部分的法文字元和所有英文字符。

語言群組

語言群組會控制可選取的非 Unicode 程式、標準和格式、輸入語言和使用者介面語言的語言。 針對每個當地語系化版本,指定的語言群組是預設值,因此無法移除。 例如,Windows 預設會安裝西歐和美國語言群組。 因此,如果英文版的 Windows 安裝在非英文國家/地區,使用者通常會安裝另一個語言群組。

新增語言群組時,Windows 會複製必要的鍵盤檔案、輸入法編輯器 (IME)、TrueType 字型檔案、位圖字型檔案,以及國家語言支援 (.nls) 檔案。 新增語言群組也會新增字型連結的登錄值,並安裝複雜腳本語言的腳本引擎(阿拉伯文、希伯來文、索引和泰文)。

除了西歐和美國語言群組之外,還有16個其他語言群組:

阿拉伯文
亞美尼亞文
波羅的海
中歐
西里爾
喬治亞語
希臘語
希伯來語
索引
日語
朝鮮語
簡體中文
繁體中文
泰語
突厥
越南文

 

任何語言群組的數目和組合都可以安裝在任何作系統上。 例如,西班牙文使用者可以安裝斯拉夫文語言群組來處理俄文文字。 在此情況下,文字處理應用程式也需要支援斯拉夫文語言群組。

注意

新增適當的語言群組不會自動讓應用程式接受文字。 建議測試。 例如,非 Unicode 應用程式可能需要變更非 Unicode 程式的語言。

 

位置

Windows XP: 位置是地理標識碼。 其會以個別用戶數據變數來表示,該變數會定義使用者所在的國家/地區。

若要設定值,應用程式會呼叫 SetUserGeoID。 若要擷取值,應用程式會 呼叫 getUserGeoID

標準和格式

標準和格式(先前稱為「用戶地區設定」)是一個個別用戶變數,可決定預設排序順序和格式化日期、時間、貨幣和數位的預設設定。 變數會呈現為語言(有時與國家/地區結合),但不是語言本身。 例如,將 Standard and Formats 變數設定為希伯來文,表示使用者想要使用希伯來文的格式設定慣例,不一定是希伯來文。 此外,Standard 和 Formats 變數會決定用於天數和月份名稱的字串。 例如,如果用戶顯示“1998 年 11 月 25 日”,則 “November” 字串可能會根據 Standard 和 Formats 變數而變更。 變更變數會自動新增具有語言預設設定的輸入地區設定。

若要取得 Standard 和 Formats 變數設定,應用程式會 呼叫 getUserDefaultLCIDGetUserDefaultLocaleName。 沒有 NLS 函式可用來設定變數。 不過,使用者可以透過 [控制面板] 區域和語言選項部分中的 [區域選項] 索引卷 標來變更它。

應用程式通常應該使用標準和格式變數設定來顯示數據。 不過,使用固定地區設定來顯示資料的應用程式應該傳遞特定的地區設定標識碼,而不是使用LOCALE_USER_DEFAULT。

線程地區設定

線程地區設定是由每個線程地區設定數據變數來表示,該變數會決定線程的日期、時間、貨幣和大數位的格式。 它預設為目前針對 [標準和格式] 選取的地區設定值。 若要設定線程地區設定,應用程式會呼叫 SetThreadLocale。 若要擷取線程地區設定,應用程式會呼叫 GetThreadLocale

在大部分情況下,不應該覆寫線程地區設定。 通常,它只應該用來同步處理伺服器應用程式的線程地區設定與用戶端計算機的 Standard 和 Formats 變數。 例如,用於全球銀行的紐約證券交易所金融股票交易申請必須以美國格式顯示時間、日期和股票價格。 此應用程式會使用 SetThreadLocale,將線程地區設定設定為英文(美國),然後使用 NLS 函式來格式化日期、時間和股價。

變更線程地區設定不會影響所有 API 函式。 因此,它不一定是覆寫 Standard 和 Formats 變數的可靠方式。 相反地,控制標準和格式的應用程式應該使用固定的地區設定來顯示數據,傳遞特定的地區設定標識符,而不是使用LOCALE_USER_DEFAULT。

NLS 範例

下列範例顯示標準與格式之間的互動、非 Unicode 程式的語言、位置和使用者 UI 語言。

身為智利本地人,但居住在美國的使用者有一部執行 Windows XP English 的電腦。 使用者將位置設定為美國,以使用因特網服務提供者 (ISP) 來取得美國的天氣。 不過,標準與格式變數會設定為西班牙文(智利),以便根據智利標準格式化資訊。 此外,使用者使用韓文字處理器,這是 ANSI 應用程式,因此非 Unicode 程式的語言會設定為韓文(韓文)。 若要使用應用程式,使用者具有英文鍵盤,並安裝韓文輸入法以支援第二種輸入語言。 共享計算機但不熟悉英文的使用者同事,可以在使用計算機時,將使用者UI語言設定為西班牙文(西班牙)。

關於國家語言支援

地區設定和語言

多語系使用者介面