UCRT ロケール名、言語、および国/地域識別文字列
locale
引数は、いくつかの方法でsetlocale
、_wsetlocale
、_create_locale
、および_wcreate_locale
関数に設定できます。 ロケールは、Windows NLS API でサポートされているロケール名、言語、国/地域コード、およびコード ページを使用して設定できます。 locale
引数は、次のいずれかの形式をとります。
locale
:: "locale-name"
|"language[_country-region[.code-page]]"
|".code-page"
| "C"
|""
| NULL
locale-name の形式は、IETF 標準化された短い文字列 (例: 英語 (米国) の en-US
、ボスニア語 (キリル、ボスニア ヘルツェゴビナ) の bs-Cyrl-BA
など) になります。 これらの形式は優先されます。 Windows オペレーティング システムのバージョンごとにサポートされるロケール名の一覧については、[MS-LCID]: Windows Language Code Identifier (LCID) Reference ([MS-LCID]: Windows 言語コード識別子 (LCID) リファレンス) の「Appendix A: Product Behavior」(付録 A: 製品の動作) に記載されている表の、[Language tag] 列をご覧ください。 このリソースは、ロケール名のサポートされている言語、スクリプト、および地域の部分を示しています。 既定以外の並べ替え順序を持つサポートされているロケール名については、Sort 順序識別子の Locale name 列を参照してください。 Windows 10 以降では、有効な BCP-47 の言語タグに対応するロケール名が許可されています。 たとえば、 jp-US
は有効な BCP-47 タグですが、実際にはロケール機能に対してのみ US
。
ロケールを作成するために、言語識別文字列、または言語識別文字列と国/地域識別文字列が使用される場合、言語[_国_地域[.コード_ページ]] 形式がカテゴリのロケール設定に格納されます。 サポートされている言語文字列のセットは Language 文字列で説明され、サポートされている国と地域の文字列の一覧は Country/Region 文字列に記載されています。 指定した言語が指定した国または地域に関連付けられていない場合、指定した国または地域の既定の言語がロケール設定に格納されます。 コードに埋め込まれたロケール文字列やストレージにシリアル化されるロケール文字列には、この形式をお勧めしません。これらの文字列は、ロケール名フォームよりもオペレーティング システムの更新によって変更される可能性が高くなります。
code-page は、ロケールに関連付けられた ANSI/OEM コード ページです。 コード ページは、言語または言語と国/地域のみによってロケールを指定すると決定されます。 特殊な値 .ACP
は国/地域の ANSI コード ページを指定します。 特殊な値 .OCP
は国/地域の OEM コード ページを指定します。 たとえば、ロケールとして "Greek_Greece.ACP"
を指定した場合、ロケールは Greek_Greece.1253
(ギリシャ語の場合は ANSI コード ページ) として格納され、ロケールとして "Greek_Greece.OCP"
を指定すると、 Greek_Greece.737
(ギリシャ語の OEM コード ページ) として格納されます。 コード ページの詳細については、「 Code ページ」を参照してください。 Windows でサポートされているコード ページの一覧については、 コード ページ識別子を参照してください。
ロケールを指定するためにコード ページのみを使用する場合は、 GetUserDefaultLocaleName
によって報告されたユーザーの既定の言語と国/地域が使用されます。 たとえば、英語 (米国) に構成されたユーザーのロケールとして ".1254"
(ANSI トルコ語) を指定した場合は、格納されているロケールは English_United States.1254
です。 一貫性のない動作につながる可能性があるため、このフォームはお勧めしません。
C
のlocale
引数値は、C 変換の最小 ANSI 準拠環境を指定します。 C
ロケールは、任意の char
データ型が 1 バイトであり、値は常に 256 未満であると推定します。 locale
が空の文字列をポイントしている場合は、実装定義のネイティブ環境になります。
setlocale
関数と _wsetlocale
関数に LC_ALL
カテゴリを使用して、ロケールのカテゴリのすべてを同時に指定できます。 カテゴリはすべて同じロケールに設定できますが、次の形式を持つロケール引数を使用して各カテゴリを個別に設定できます。
LC-ALL-specifier
::locale
|[LC_COLLATE=
locale
][;LC_CTYPE=
locale
][;LC_MONETARY=
locale
][;LC_NUMERIC=
locale
][;LC_TIME=
locale
]
セミコロンで区切って複数のカテゴリの種類を指定できます。 指定されていないカテゴリの種類では、現在のロケール設定が使用されます。 たとえば、このコード スニペットは、すべてのカテゴリの現在のロケールを de-DE
に設定し、カテゴリ LC_MONETARY
を en-GB
に、カテゴリ LC_TIME
を es-ES
に設定します。
_wsetlocale(LC_ALL, L"de-DE");
_wsetlocale(LC_ALL, L"LC_MONETARY=en-GB;LC_TIME=es-ES");
UTF-8 のサポート
Utf-8 のサポートは、ロケール文字列で UTF-8 コード ページを使用することで有効にできます。 詳細については、setlocale
の「UTF-8 サポート」セクションを参照してください。
関連項目
C ランタイム ライブラリ リファレンス
_get_current_locale
setlocale
, _wsetlocale
_create_locale
, _wcreate_locale
言語文字列
国/地域の文字列