使用自訂地區設定

本主題提供在應用程式中處理 自訂地區 設定的一些指示。 最好將所有原始程式碼都考慮到這些考慮,因為您的應用程式不會控制是否已在作業系統上安裝自訂地區設定。

正確處理LOCALE_STIME常數

如果您有使用 GetLocaleInfo 取得 LOCALE_STIME所指示的過時時間分隔符號的舊應用程式,應用程式將無法剖析時間格式。 請記住,分隔小時與分鐘數的字元,與分隔分鐘與秒數的字元不同。

注意

針對自訂地區設定進行程式設計時,請記住它們不尋常。 NLS 幾乎每個可用的欄位都必須處理不尋常的行為。 例如,時間格式 12H34'12' 是合法的,而且通常可理解。 但許多應用程式會假設可以中斷緩衝區長度或顯示欄位的時間分隔符號。

 

區分補充地區設定

所有補充地區設定都會針對地區設定識別碼使用LOCALE_CUSTOM_UNSPECIFIED常數。 因此, GetLocaleInfo 無法區分補充地區設定,但 GetLocaleInfoEx 可以使用 地區設定名稱 ,而不是地區設定識別碼。 只有當該地區設定是目前選取的使用者地區設定時,您的應用程式才能擷取特定補充地區設定的相關資訊。 然後,應用程式可以呼叫 GetLocaleInfo ,並將常數 LOCALE_USER_DEFAULT 傳遞為地區設定識別碼。

處理取代地區設定

若要保留 Windows 的可靠性,請記住您的應用程式所支援的取代地區設定無法修改所取代地區設定的地區設定識別碼。 取代地區設定都無法修改 Windows 的排序屬性。

雖然取代地區設定可以變更預設行事曆,但它必須保留可用行事曆清單中的某處原始預設值。 例如,泰文 (泰文) 地區設定會使用泰文曆做為預設值。 系統管理員可以建立使用西曆當地語系化的替代地區設定。 不過,可用的行事曆清單會繼續包含泰文月曆的專案。

針對取代地區設定,您的應用程式通常應該參考地區設定特定的資訊,而不是根據特定地區設定的知識嘗試「快捷方式」。 例如,當GetThreadLocale將目前的地區設定擷取為英文 (美國) 時,它實際上可能是應該允許生效的取代地區設定。

自訂行事曆

您的應用程式可以自訂西曆的日和月名稱,但不適用於非西曆。 同樣地,NLS 不支援建立使用者定義的自訂行事曆。 如需詳細資訊,請參閱 日期與行事曆

處理排序序列

補充地區設定可以使用任何 Microsoft 定義的排序次序。 取代地區設定必須與取代的地區設定使用相同的排序次序。 NLS 不支援建立使用者定義的排序序列。 如需詳細資訊,請參閱 處理應用程式中的排序

當地語系化自訂地區設定資訊

NLS 不提供當地語系化自訂地區設定資訊的機制。 因此,當做自訂地區設定的地區設定識別碼使用的常數 LOCALE_SLANGUAGELOCALE_SLOCALIZEDLANGUAGENAME 一律會擷取與 LOCALE_SNATIVELANGNAMELOCALE_SNATIVELANGUAGENAME相關聯的值。

使用國家語言支援

自訂地區設定

日期與行事曆

處理應用程式中的排序