使用自訂的地區設定
本主題提供一些指示,說明在應用程式中處理 自定義地區設定。 最好在撰寫所有原始程式碼時考慮到這些因素,因為您的應用程式無法控制作業系統上是否安裝自訂地區設定。
正確處理LOCALE_STIME常數
如果您有使用 GetLocaleInfo 取得 LOCALE_STIME所指示的過時時間分隔符的較舊應用程式,則應用程式無法剖析時間格式。 請記住,分隔小時與分鐘數的字元,與分隔分鐘與秒數的字元不同。
注意
針對自定義地區設定進行程序設計時,請記住它們不尋常。 幾乎每個 NLS 涉及的領域都必須應付異常行為。 例如,時間格式 12H34'12'' 是合法的,而且通常可以理解。 然而,許多應用程式都會假設時間分隔符可能會中斷緩衝區長度或顯示欄位。
區分輔助區域設定
所有補充地區設定都會針對 地區設定標識子使用 LOCALE_CUSTOM_UNSPECIFIED 常數。 通常,GetLocaleInfo 無法辨識不同的補充地區設定;但 GetLocaleInfoEx 則可以,因為它使用地區名稱 而非地區標識符。 只有當地區設定是目前選取的用戶地區設定時,您的應用程式才能擷取特定補充地區設定的相關信息。 然後,應用程式可以呼叫 GetLocaleInfo,並將常數 LOCALE_USER_DEFAULT 當做地區設定標識符傳遞。
處理替換地區設定
若要保留 Windows 的可靠性,請記住,應用程式支援的取代地區設定無法修改所取代地區設定的地區設定標識符。 取代的地區設定都無法修改 Windows 的排序屬性。
雖然取代的地區設定可以變更預設行事曆,但它必須保留可用行事曆清單中的原始預設值。 例如,泰國(泰國)地區設定會使用泰國佛教日曆做為預設值。 系統管理員可以建立使用公曆本地化行事曆的取代地區設定。 不過,可用的日曆清單依然包含泰國佛教曆的項目。
針對替代地區設定,您的應用程式應該參考地區特定資訊,而不是試圖使用基於對特定地區知識的「捷徑」。 例如,GetThreadLocale 擷取目前的地區設定為英文(美國),它實際上可能是應該允許生效的替代地區設定。
自定義行事曆
您的應用程式可以自定義公曆的日和月名稱,但不適用於非公曆。 同樣地,NLS 不支援建立使用者定義的自定義行事曆。 如需詳細資訊,請參閱 Date 和 Calendar。
處理排序序列
補充語言環境可以使用任何 Microsoft 定義的排序順序。 取代地區設定必須使用與其取代的地區設定相同的排序順序。 NLS 不支援建立使用者定義的排序順序。 如需詳細資訊,請參閱 處理應用程式中的排序。
本地化自定義地區資訊
NLS 沒有提供本地化自定義語系設定資料的機制。 因此,當常數 LOCALE_SLANGUAGE 或 LOCALE_SLOCALIZEDLANGUAGENAME 被用作自定義地區設定的地區設定標識碼時,一律會擷取與 LOCALE_SNATIVELANGNAME 或 LOCALE_SNATIVELANGUAGENAME相關聯的值。
相關主題