NLS 術語
本主題定義使用 NLS 功能時很重要的詞彙。
地區設定和語言詞彙
下表摘要說明地區設定和語言詞彙。 另請參閱 地區設定和語言。
語言群組 | 非 Unicode 程式的語言 | 標準及格式 | |
---|---|---|---|
目的 | 提供所有鍵盤配置、輸入法編輯器 (IME) 、TrueType 字型、字型連結、授權套件檔案 (LPK) 、點陣圖字型,以及作業系統針對一組語言所需的字碼頁轉譯表。 因此,會影響此清單中的所有其他設定。 | 決定作業系統的點陣圖字型和 OEM、ANSI 和 Macintosh 字碼頁是預設值。 此語言只會影響未完全 Unicode 的應用程式。 在 Windows XP 之前,此語言稱為「系統地區設定」。 | 決定用於格式化日期、時間、貨幣和數位的設定,做為每個使用者的預設值。 也會決定排序文字的排序次序。 在 Windows XP 之前,標準及格式稱為「使用者地區設定」。 |
第一組 | 安裝 | 安裝 | 安裝 |
使用者如何變更 | 區域選項 (主控台專案) Windowsxp: 地區和語言選項 僅 (系統管理員) |
區域選項 (主控台專案) Windowsxp: 地區和語言選項 僅 (系統管理員) |
區域選項 (主控台專案) Windowsxp: 地區和語言選項 |
預設值 | 西歐和美國和語言群組,才能顯示當地語系化版本的語言。 | 當地語系化版本的語言。 | 當地語系化作業系統的語言。 |
Function | EnumSystemLanguageGroups | GetSystemDefaultLangID | GetUserDefaultLCID、 GetUserDefaultLocaleName |
執行緒地區設定 | 輸入語言 | 系統預設 UI 語言 | |
---|---|---|---|
目的 | 決定用於格式化執行緒日期、時間、貨幣和大型數位的設定。 也會決定排序文字的排序次序。 | 由語言和輸入方法所組成。 | 決定功能表和對話方塊、訊息、設定資訊 (INF) 檔案和說明檔的預設語言。 Windows Vista 和更新版本: 稱為安裝語言。 扮演更有限的角色,主要是由系統慣用的 UI 語言取代。 如需詳細資訊,請參閱 使用者介面語言管理 |
第一組 | 預設為標準及格式 | 安裝 | 安裝 |
使用者如何變更 | SetThreadLocale | 區域選項 (主控台專案) Windowsxp: 地區和語言選項 |
否 |
預設值 | 標準及格式 | 具有預設輸入法的當地語系化版本語言。 | 當地語系化版本的語言。 |
Function | GetThreadLocale | GetKeyboardLayout | GetSystemDefaultUILanguage |
系統 UI 語言、系統慣用的 UI 語言 | 使用者 UI 語言、使用者慣用 UI 語言 | 執行緒慣用 UI 語言 | |
---|---|---|---|
目的 | 判斷作業系統的功能表和對話方塊、訊息、INF 檔案和說明檔案的語言。 如需詳細資訊,請參閱 使用者介面語言管理。 | 決定使用者功能表和對話方塊、訊息和說明檔的語言。 如需詳細資訊,請參閱 使用者介面語言管理。 | Windows Vista 和更新版本: 指定應用程式執行緒的慣用語言。 如需詳細資訊,請參閱 使用者介面語言管理。 |
第一組 | 預設值為 Null | 預設值為 Null | 預設值為 Null |
使用者如何變更 | 地區及語言選項 僅 (系統管理員) |
區域選項 (主控台專案) Windowsxp: 地區和語言選項 |
SetThreadPreferredUILanguages |
預設值 | Windows Vista 和更新版本: 當地語系化版本的語言,後面接著任何後援。 |
在 Windows Vista 之前: 當地語系化版本的語言。 Windows Vista 和更新版本: 當地語系化版本的語言,後面接著任何後援。 |
Null 清單 |
Function | GetSystemPreferredUILanguages | GetUserDefaultUILanguage、 GetUserPreferredUILanguages | GetThreadPreferredUILanguages |
處理慣用的 UI 語言 | |
---|---|
目的 | Windows 7 和更新版本: 判斷應用程式進程的慣用語言。 如需詳細資訊,請參閱 使用者介面語言管理。 |
第一組 | 預設值為 Null |
使用者如何變更 | 僅限系統管理員) (地區和語言選項 |
預設值 | Windows 7 和更新版本: 當地語系化版本的語言,後面接著任何後援。 |
Function | GetProcessPreferredUILanguages、 SetProcessPreferredUILanguages |
字碼頁
256 個字碼點字碼頁無法支援在單一文字中混合腳本,是 Unicode 增加的主要原因之一。 撰寫主控台程式碼、維護舊版 Windows 或在舊版 Windows 上執行,以及與未啟用 Unicode 的某些非 Microsoft 軟體互動,字碼頁仍然很重要。
輸入語言
輸入語言是由每一進程資料變數來表示,其中描述語言 (例如,希臘文) 和輸入方法 (,例如鍵盤) 。 可以安裝多個輸入語言,而且使用者可以在兩者之間切換。
若要設定和擷取輸入語言值,應用程式會分別呼叫 LoadKeyboardLayout 和 GetKeyboardLayout。 使用者可以透過主控台地區和語言選項部分的 [語言] 索引標籤,新增和移除輸入語言。
預設輸入語言是作業系統的當地語系化語言,而且它是當新應用程式啟動 (或開啟某些應用程式的新視窗) 時作用中的設定。 切換至不同的輸入語言是以個別應用程式為基礎來完成。 換句話說,兩種不同的輸入語言可用於兩個不同的應用程式。 例如,使用者可以使用國際美國鍵盤配置輸入德文、使用語音輸入 (與非 Microsoft 軟體) 的英文,以及在三個不同的應用程式中使用 IME 的西班牙文。
非 Unicode 程式的語言
非 Unicode 程式的語言 (先前稱為「系統地區設定」) 會決定預設在作業系統上使用的字碼頁。 非 Unicode 程式設定的語言只會影響非 Unicode 應用程式,也就是 ANSI 應用程式。 設定語言會指示 Windows 模擬非 Unicode 型作業系統,並當地語系化為此語言。 變更非 Unicode 程式的語言會安裝必要的點陣圖字型檔案,以支援指定語言中的非 Unicode 應用程式。 若要允許使用者選取非 Unicode 程式的語言,必須安裝適當的語言群組。 您的應用程式需要腳本支援,才能選取非 Unicode 程式的語言。 非 Unicode 程式的語言是每一系統設定,而且需要實作重新開機。
有時候非 Unicode 程式兩種語言之間沒有明顯的差異。 例如,這是德文 (中性) 和德文 (奧地利) 地區設定的情況。 一般而言,一個語言群組的設定非常類似,而且只會在 OEM 或 MAC 字碼頁中有所不同。
ANSI 應用程式應該在安裝期間檢查非 Unicode 程式設定的語言。 它會使用 GetACP 或 GetOEMCP 來擷取值。 不支援任何函式來設定非 Unicode 程式的語言。 不過,使用者可以在主控台的區域和語言選項部分使用 [進階] 索引標籤來變更它。 以下是非 Unicode 程式設定的一些語言範例:
- 想要執行針對日文 Windows 95 設計的日文應用程式,德文使用者必須選取日文作為非 Unicode 程式的語言。 選取此選項之後,非 Unicode 德文應用程式會有問題。 例如,不會正確顯示德文 umlauts (ー) 。
- 想要在非 Unicode 德文應用程式中輸入日文文字的德文使用者,必須選取日文作為非 Unicode 程式的語言。 如同第一個範例,這會導致在非 Unicode 應用程式中輸入德文文字時發生問題。
- 想要在非 Unicode 阿拉伯文應用程式中輸入阿拉伯文、法文和英文的阿拉伯文使用者應該選取阿拉伯文作為非 Unicode 程式的語言,因為阿拉伯文 ANSI 字碼頁包含大部分法文字元和所有英文字元。
語言群組
語言群組會控制可以選取的非 Unicode 程式、標準及格式、輸入語言和使用者介面語言的語言。 針對每個當地語系化版本,指定的語言群組是預設值,而且無法移除。 例如,Windows 預設會安裝西歐和美國語言群組。 因此,如果 Windows 的英文版本安裝在非英文國家/地區,則使用者通常會安裝另一個語言群組。
新增語言群組時,Windows 會複製 (,但不會) 必要的鍵盤檔案、輸入法編輯器 (IME) 、TrueType 字型檔案、點陣圖字型檔案,以及國家語言支援 (.nls) 檔案。 新增語言群組也會新增字型連結的登錄值,並安裝複雜字集語言的腳本引擎, (阿拉伯文、希伯來文、索引和泰文) 。
除了西歐和美國語言群組之外,還有 16 個其他語言群組:
亞美尼亞文 波羅的語系 歐洲中部 古斯拉夫文 喬治亞文 希臘文 Hebrew |
日文 韓文 簡體中文 繁體中文 泰文 突厥 越南文 |
語言群組的任何數目和組合都可以安裝在任何作業系統上。 例如,西班牙文使用者可以安裝斯拉夫文語言群組,以處理俄文文字。 在此情況下,文字處理應用程式也需要支援斯拉夫文語言群組。
注意
新增適當的語言群組不會自動讓應用程式接受文字。 建議進行測試。 例如,非 Unicode 應用程式可能需要變更非 Unicode 程式的語言。
位置
Windowsxp: 位置是地理識別碼。 它會以每個使用者資料變數表示,該變數會定義使用者所在的國家/地區。
若要設定值,應用程式會呼叫 SetUserGeoID。 若要擷取值,應用程式會呼叫 GetUserGeoID。
標準及格式
標準及格式 (先前稱為「使用者地區設定」) 是每個使用者變數,可決定預設排序次序和格式化日期、時間、貨幣和數位的預設設定。 變數會呈現為語言 (有時與國家/地區) 結合,但不是語言本身。 例如,將 [標準及格式] 變數設定為希伯來文,表示使用者想要使用希伯來文的格式設定慣例,不一定是希伯來文。 此外,Standard and Formats 變數會決定用於天數和月份名稱的字串。 例如,如果使用者顯示 「1998 年 11 月 25 日」,則 「November」 字串可能會根據 [標準及格式] 變數而變更。 變更變數會自動新增具有語言預設設定的輸入地區設定。
若要取得 Standard 和 Formats 變數設定,應用程式會呼叫 GetUserDefaultLCID 或 GetUserDefaultLocaleName。 沒有 NLS 函式可用來設定變數。 不過,使用者可以透過主控台的區域和語言選項部分的 [區域選項] 索引標籤加以變更。
應用程式通常應該使用標準及格式變數設定來顯示資料。 不過,使用固定地區設定來顯示資料的應用程式應該傳遞特定的地區設定識別碼,而不是使用LOCALE_USER_DEFAULT。
執行緒地區設定
執行緒地區設定是由每一線程地區設定資料變數表示,決定執行緒的日期、時間、貨幣和大型數位的格式。 它預設為目前針對 [標準及格式] 選取的地區設定值。 若要設定執行緒地區設定,應用程式會呼叫 SetThreadLocale。 若要擷取執行緒地區設定,應用程式會呼叫 GetThreadLocale。
在大部分情況下,不應該覆寫執行緒地區設定。 一般而言,它應該只用來同步處理伺服器應用程式的執行緒地區設定與用戶端電腦的 Standard 和 Formats 變數。 例如,用於全球銀行的紐約股票交易應用程式必須以美國格式顯示時間、日期和股票價格。 此應用程式會使用SetThreadLocale將執行緒地區設定設為英文 (美國) 然後使用 NLS 函式來格式化日期、時間和股票價格。
變更執行緒地區設定不會影響所有 API 函式。 因此,不一定是覆寫 Standard 和 Formats 變數的可靠方式。 相反地,控制標準及格式的應用程式應該使用固定的地區設定來顯示資料,傳遞特定的地區設定識別碼,而不是使用LOCALE_USER_DEFAULT。
NLS 範例
下列範例顯示標準與格式之間的互動、非 Unicode 程式的語言、位置和使用者 UI 語言的語言。
身為英國原生但位於美國的使用者有執行 Windows XP English 的電腦。 使用者會將位置設定為美國,以使用 ISP (ISP) 的網際網路服務提供者來取得美國的天氣。 不過,標準與格式變數會設定為西班牙文 (西班牙) ,以便根據西班牙標準來格式化資訊。 此外,使用者會使用韓文字處理器,這是 ANSI 應用程式,讓非 Unicode 程式的語言設定為韓文 (韓文) 。 若要使用應用程式,使用者具有英文鍵盤,也會安裝韓文輸入法以支援第二個輸入語言。 共用電腦但不熟悉英文的使用者同事,可以在使用電腦時,將使用者 UI 語言設定為西班牙文 (西班牙) 。
相關主題