コンピューティングにおいて、ロケールとは、ユーザーの言語、地域、およびユーザーインターフェースに表示させたい特別なバリアント設定を定義する一連のパラメータのことです。通常、ロケール識別子は、少なくとも言語コードと国/地域コードで構成されます。ロケールは、国際化(i18n)の重要な要素です。
これらの設定には通常、以下の表示(出力)フォーマット設定が含まれます。
ロケール設定は、ロケールに基づいて出力の書式を設定するためのものです。そのため、タイムゾーン情報や夏時間は通常、ロケール設定には含まれません。入力フォーマット設定はあまり一般的ではありませんが、これは主にアプリケーションごとに定義されます。
このような環境では、
そして、その他の(現在では)Unicodeベースの環境では、 BCP 47と同様の形式で定義されます。通常は、 ISO 639(言語)コードとISO 3166-1 alpha-2(2文字の国コード)のみで定義されます。
標準CおよびC++では、ロケールはLC_COLLATE(テキスト照合)、LC_CTYPE(文字クラス)、LC_MONETARY(通貨形式)、LC_NUMERIC(数値形式)、LC_TIME(時刻形式)の「カテゴリ」で定義されます。特別なLC_ALLカテゴリを使用すると、すべてのロケール設定を行うことができます。[ 1 ]
CおよびC++規格には、「最小限のロケール」名「C」以外に標準的なロケール名は存在しないが、POSIX形式は一般的に使用される基準となっている。
Unix、LinuxなどのPOSIXプラットフォームでは、ロケール識別子はBCP 47の言語タグの定義と同様の方法で定義されますが、ロケールバリアント修飾子は異なる方法で定義され、文字セットはオプションで識別子の一部として含まれます。POSIXまたは「XPG」形式は[language[_territory][.codeset][@modifier]]です。(たとえば、UTF-8エンコーディングを使用するオーストラリア英語はen_AU.UTF-8です。)[ 2 ]また、ISO/IEC 15897では、 language_territory+audience+application,sponsor_versionという別の形式が記述されていますが、実際に使用されているかどうかは非常に疑わしいです。[ 3 ]
次の例は、チェコ語(cs)、チェコ共和国(CZ)localeに対するコマンドの出力で、明示的なUTF-8エンコーディングが使用されています。
$ロケール LANG=cs_CZ.UTF-8 LC_CTYPE="cs_CZ.UTF-8" LC_NUMERIC="cs_CZ.UTF-8" LC_TIME="cs_CZ.UTF-8" LC_COLLATE="cs_CZ.UTF-8" LC_MONETARY="cs_CZ.UTF-8" LC_MESSAGES="cs_CZ.UTF-8" LC_PAPER="cs_CZ.UTF-8" LC_NAME="cs_CZ.UTF-8" LC_ADDRESS="cs_CZ.UTF-8" LC_TELEPHONE="cs_CZ.UTF-8" LC_MEASUREMENT="cs_CZ.UTF-8" LC_IDENTIFICATION="cs_CZ.UTF-8" LC_ALL=
Windows は特定の言語[ 4 ]と地域[ 5 ]の文字列を使用します。Microsoft Windowsのアンマネージド コードのロケール識別子(LCID)は、英語 (米国) の場合は 1033、英語 (英国) の場合は 2057、日本語 (日本) の場合は 1041 などの数値です。これらの数値は、言語コード (下位 10 ビット) とカルチャ コード (上位ビット) で構成され、そのため0x0409、0x0809、0x0411 などの 16 進表記で記述されることがよくあります。Microsoftは、この形式を使用する .NET 用のマネージド コードアプリケーション プログラミング インターフェイス(API) の導入を開始しています。最初に一般にリリースされた API の 1 つは、国際化ドメイン名の問題を軽減する機能です[ 6 ]ですが、Windows Vista Beta 1 にはさらに多くの機能が含まれています。
Windows Vista以降、BCP 47ロケール名を使用する新しい関数[ 7 ]が導入され、ほぼすべてのLCIDベースのAPIが置き換えられました。
Windows 10 および 11 の UCRT (Universal C Run Time) では、言語[_国-地域[.コードページ]]という POSIX に似たロケール名形式が利用可能です。 [ 8 ]
ナラティブ文化仕様およびPOSIXロケールの場合、トークン識別子は8_9+11+12,13_14となります。
java.util.LocaleJavadoc APIドキュメント