カスタム ロケールの操作
このトピックでは、アプリケーションで カスタム ロケールを 処理する手順について説明します。 アプリケーションではカスタム ロケールがオペレーティング システムにインストールされるかどうかを制御しないため、これらの考慮事項を考慮してすべてのソース コードを準備することをお勧めします。
LOCALE_STIME定数を正しく処理する
GetLocaleInfo を使用して LOCALE_STIME で示される古い時刻区切り記号を取得する古いアプリケーションがある場合、アプリケーションは時刻形式の解析に失敗する可能性があります。 時間と分を区切る文字は、分と秒を区切る文字とは異なっています。
Note
カスタム ロケール用にプログラミングする場合は、通常とは異なる点に注意してください。 NLS で使用できるほぼすべてのフィールドは、通常とは異なる動作に対処する必要があります。 たとえば、時刻形式 12H34'12'' は正当であり、一般的に理解できます。 ただし、多くのアプリケーションでは、バッファーの長さを中断したりフィールドを表示したりできる時刻区切り記号について想定しています。
補足ロケールを区別する
すべての補助ロケールでは、ロケール識別子にLOCALE_CUSTOM_UNSPECIFIED定数が使用されます。 原則として、 GetLocaleInfo は補足ロケールを区別できませんが、 GetLocaleInfoEx はロケール識別子の代わりに ロケール名 を使用するためです。 アプリケーションは、そのロケールが現在選択されているユーザー ロケールである場合にのみ、特定の補足ロケールに関する情報を取得できます。 次に、アプリケーションで GetLocaleInfo を 呼び出し、ロケール識別子として 定数LOCALE_USER_DEFAULT を渡すことができます。
置換ロケールを処理する
Windows の信頼性を維持するために、アプリケーションでサポートされている代替ロケールは、置き換えられたロケールのロケール識別子を変更できないことに注意してください。 代替ロケールで Windows の並べ替えプロパティを変更することもできません。
代替ロケールでは既定の予定表を変更できますが、使用可能な予定表の一覧のどこかに元の既定値を保持する必要があります。 たとえば、タイ語 (タイ) のロケールでは、既定としてタイ仏暦が使用されます。 管理者は、グレゴリオ暦のローカライズされた予定表を使用する代替ロケールを作成できます。 ただし、使用可能なカレンダーの一覧には、タイ仏教暦のエントリが引き続き含まれています。
置換ロケールの場合、アプリケーションでは通常、特定のロケールの知識に基づいて "ショートカット" を試すのではなく、ロケール固有の情報を参照する必要があります。 たとえば、GetThreadLocale が現在のロケールを英語 (米国) として取得する場合、実際には有効にできる代替ロケールである可能性があります。
予定表をカスタマイズする
アプリケーションでは、グレゴリオ暦の日と月の名前をカスタマイズできますが、グレゴリオ暦以外のカレンダーにはカスタマイズできません。 同様に、NLS では、ユーザー定義のカスタム カレンダーの作成はサポートされていません。 詳細については、「 日付とカレンダー」を参照してください。
並べ替えシーケンスの処理
補足ロケールでは、Microsoft が定義した並べ替え順序を使用できます。 置換ロケールでは、置き換えるロケールと同じ並べ替えシーケンスを使用する必要があります。 NLS では、ユーザー定義の並べ替えシーケンスの作成はサポートされていません。 詳細については、「 アプリケーションでの並べ替えの処理」を参照してください。
カスタム ロケール情報をローカライズする
NLS には、カスタム ロケール情報をローカライズするためのメカニズムは用意されていません。 したがって、カスタム ロケールのロケール識別子として使用される定数LOCALE_SLANGUAGEまたはLOCALE_SLOCALIZEDLANGUAGENAMEは、常にLOCALE_SNATIVELANGNAMEまたはLOCALE_SNATIVELANGUAGENAMEに関連付けられている値を取得します。
関連トピック