GetLocaleInfoEx 関数 (winnls.h)

名前で指定されたロケールに関する情報を取得します。

メモ アプリケーションは、Windows Vista 以降でのみ実行するように設計されている場合は 、GetLocaleInfo を優先してこの関数を呼び出す必要があります。

 
メモ この関数は、たとえばカスタム ロケールのためにリリース間で変更されるデータを取得できます。 アプリケーションでデータを永続化または送信する必要がある場合は、「 永続的なロケール データの使用」を参照してください。
 

構文

int GetLocaleInfoEx(
  [in, optional]  LPCWSTR lpLocaleName,
  [in]            LCTYPE  LCType,
  [out, optional] LPWSTR  lpLCData,
  [in]            int     cchData
);

パラメーター

[in, optional] lpLocaleName

ロケール名へのポインター、または次の定義済みの値のいずれか。

[in] LCType

取得するロケール情報。 使用可能な値については、「 ロケール情報定数」の「GetLocaleInfo、GetLocaleInfoEx、および SetLocaleInfo の LCType パラメーターで使用される定数」セクションを参照してください。 呼び出しごとに指定できるロケール情報は 1 つだけであることに注意してください。

アプリケーションでは、バイナリ OR 演算子を使用して 、LOCALE_RETURN_NUMBER を他の許可された定数と組み合わせることができます。 この場合、関数は値を文字列ではなく数値として取得します。 値を受け取るバッファーは、少なくとも DWORD 値の長さ (2) である必要があります。

注意 LOCALE_NOUSEROVERRIDEを他の 定数と組 み合わせることもできます。 ただし、この定数の使用は強くお勧めしません。 (現在のユーザーオーバーライドを使用しない場合でも、データはコンピューターによって異なる場合があり、カスタムロケールはデータを変更できます。たとえば、月や日の名前であっても、スペルが変更される可能性があります)。
 
LCTypeLOCALE_IOPTIONALCALENDAR に設定されている場合、関数は最初の代替カレンダーのみを取得します。
メモ すべての代替カレンダーを取得するには、アプリケーションで EnumCalendarInfoEx を使用する必要があります。
 
Windows Vista 以降では、予期しないデータのエラーや取得を回避するために、アプリケーションで LCType パラメーターで LOCALE_ILANGUAGEを使用しないでください。 代わりに、アプリケーションで GetLocaleInfoEx を呼び出すようにすることをお勧めします。

[out, optional] lpLCData

この関数が要求されたロケール情報を取得するバッファーへのポインター。 cchData が 0 に設定されている場合、このポインターは使用されません。

[in] cchData

lpLCData で示されるデータ バッファーのサイズ (文字単位)。 または、アプリケーションでこのパラメーターを 0 に設定することもできます。 この場合、関数は lpLCData パラメーターを使用せず、終端の null 文字を含め、必要なバッファー サイズを返します。

戻り値

成功した場合にロケール データ バッファーで取得された文字数を返し、 cchData が 0 以外の値です。 関数が成功し、 cchData が 0 以外で、 LOCALE_RETURN_NUMBER が指定されている場合、戻り値はデータ バッファーで取得された整数のサイズ (つまり 2) です。 関数が成功し、 cchData の値が 0 の場合、戻り値はロケール データ バッファーに必要なサイズ (null 文字を含む文字) になります。

成功しなかった場合、関数は 0 を返します。 拡張エラー情報を取得するために、アプリケーションは GetLastError を呼び出すことができます。これにより、次のいずれかのエラー コードが返されます。

  • ERROR_INSUFFICIENT_BUFFER。 指定されたバッファー サイズが十分に大きくなかったか、 正しく NULL に設定されていませんでした。
  • ERROR_INVALID_FLAGS。 フラグに指定された値が無効でした。
  • ERROR_INVALID_PARAMETER。 パラメーター値のいずれかが無効です。

注釈

この関数は通常、テキスト形式で情報を取得します。 情報が数値で、 LCType の値が LOCALE_ILANGUAGE または LOCALE_IDEFAULTLANGUAGEの場合、この関数は 16 進数を含む文字列を取得します。 それ以外の場合、数値情報の取得されたテキストは 10 進数です。

このルールには例外が 2 つあります。 最初に、アプリケーションは LCType パラメーターに LOCALE_RETURN_NUMBERを指定することで、数値を整数として取得できます。 2 つ目の例外は、 LOCALE_FONTSIGNATURE が他のすべてのロケール情報定数とは異なる動作をする点です。 アプリケーションは、sizeof(LOCALESIGNATURE) バイト以上のデータ バッファーを提供する必要があります。 関数から正常に戻った場合、バッファーは LOCALESIGNATURE 構造体として入力されます。

メモLCType パラメーターを LOCALE_FONTSIGNATURE として指定した場合でも、cchData と関数の戻り値は文字数のままです。 アプリケーションが、LOCALE_FONTSIGNATUREとして指定された LCType を使用して GetLocaleInfoEx を呼び出す場合、cchData を sizeof(LOCALESIGNATURE) / sizeof(WCHAR) として安全に指定できます。
 
次の例では、テキスト以外の値のバッファー サイズが正しく処理されます。
int   ret;
CALID calid;
DWORD value;

ret = GetLocaleInfoEx(LOCALE_NAME_USER_DEFAULT,
                      LOCALE_ICALENDARTYPE | LOCALE_RETURN_NUMBER,
                      (LPWSTR)&value,
                      sizeof(value) / sizeof(WCHAR) );
calid = value;

LOCALESIGNATURE LocSig;

ret = GetLocaleInfoEx(LOCALE_NAME_USER_DEFAULT,
                      LOCALE_FONTSIGNATURE,
                      (LPWSTR)&LocSig,
                      sizeof(LocSig) / sizeof(WCHAR) );

この関数は、 カスタム ロケールからデータを取得できます。 データは、コンピューター間、またはアプリケーションの実行間で同じになることは保証されません。 アプリケーションでデータを永続化または送信する必要がある場合は、「 永続的なロケール データの使用」を参照してください。

Windows 8以降: アプリが Windows.Globalization 名前空間からこの関数に言語タグを渡す場合は、最初に ResolveLocaleName を呼び出してタグを変換する必要があります。

この関数の使用例については、「 NLS: 名前ベースの API サンプル 」と「 NLS: 国際化ドメイン名 (IDN) 軽減サンプル」を参照してください

要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ | UWP アプリ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリ | UWP アプリ]
対象プラットフォーム Windows
ヘッダー winnls.h (Windows.h を含む)
Library Kernel32.lib
[DLL] Kernel32.dll

関連項目

GetLocaleInfo

GetSystemDefaultLocaleName

GetUserDefaultLocaleName

各国語サポート

各国語サポート関数

ロケール情報の取得と設定

SetLocaleInfo