クラスLocale
- すべての実装されたインタフェース:
Serializable
,Cloneable
Locale
は、特定の地理的、政治的または文化的なリージョンを表します。 タスクを実行するためにLocale
を必要とするAPIは、locale-sensitiveで、Locale
を使用してユーザーの情報を調整します。 これらのlocale-sensitive APIは、主にjava.textおよびjava.utilパッケージにあります。 たとえば、数字の表示はlocale-sensitive操作です。数字は、ユーザーの母国、リージョンまたは文化の慣習および規則に従って書式設定する必要があります。
Locale
クラスは、RFC 4647「Matching of Language Tags」およびRFC 5646「Tags for Identifying Languages」で構成されるIETF BCP 47を実装し、ロケール・データ交換用のLDML (UTS#35「Unicode Locale Data Markup Language」) BCP 47互換拡張をサポートします。 各Locale
は、Javaランタイム環境またはデプロイ済のLocaleServiceProvider
実装によって提供されるロケール・データに関連付けられます。 Javaランタイム環境によって提供されるロケール・データは、リリースによって異なる場合があります。
ロケール構成
Locale
は、次に説明する太字フィールドで構成されます。Locale
には、このようなフィールドがすべて含まれている必要はありません。 たとえば、Locale.ENGLISH
はlanguageフィールドのみで構成されます。 対照的に、 Locale.forLanguageTag("en-Latn-US-POSIX-u-nu-latn")
によって返されるようなLocale
は、次のすべてのフィールドで構成されます。 この特定のLocale
は、POSIX環境で使用するラテン・スクリプトおよび数値を使用する米国では英語を表します。
Locale
はIETF BCP 47を実装し、"BCP 47の偏差:"のプレフィクスが付いたコメントによって偏差を監視する必要があります。 RFC 5646は、Locale
の構成にも含まれる様々なISO (639, 3166, 15924)標準のサブタグを組み合せます。 また、各フィールドの有効なコードの完全なリストは、「IANA言語サブタグ・レジストリ」 (例: "型: region"の検索)にあります。
- language
- ISO 639 alpha-2/alpha-3言語コードまたは8文字までの登録言語サブタグ(将来の拡張)。 言語にalpha-2コードとalpha-3コードの両方がある場合は、alpha-2コードを使用する必要があります。
- 大文字と小文字の区別:
language
では大文字と小文字は区別されませんが、Locale
では常に小文字に正規化されます。 - 構文: 整形式の
language
値の形式は[a-zA-Z]{2,8}
です。 - BCP 47の偏差: これは、extlang (最新の3文字の言語コードが優先されるため)を除外するため、完全なBCP 47言語生成ではありません。
- 例: "en" (英語), "ja" (日本語), "kok" (コンカニ語)
- script
- ISO 15924 alpha-4スクリプト・コード。
- 大文字と小文字の区別:
script
は大/小文字を区別しませんが、Locale
は常に大/小文字(最初の文字は大文字で、残りの文字は小文字です)のタイトルに正規化されます。 - 構文: 整形式の
script
値の形式は[a-zA-Z]{4}
です - 例: "ラトーン" (ラテン語), "Cyrl" (キリル)
- country (region)
- ISO 3166 alpha-2の国コードまたはUN M.49 numeric-3の地域コード。
- 大文字と小文字の区別:
country (region)
では大/小文字は区別されませんが、Locale
では常に大文字に正規化されます。 - 構文: 整形式の
country (region)
値の形式は[a-zA-Z]{2} | [0-9]{3}
です - 例: "US" (アメリカ合衆国), "FR" (フランス), "029" (カリブ海)
- variant
-
Locale
のバリエーションを示すために使用される任意の値。 複数のバリアントが存在する場合は、('_'|'-')
で区切る必要があります。 より重要度の高い変数は、他の変数より優先されます。 - BCP 47の偏差: BCP 47サブタグは、言語、スクリプト、およびリージョン・サブタグの組み合わせではカバーされない言語またはその方言を定義する追加のバリエーションを示すために厳密に使用されます。 ただし、
Locale
のバリアント・フィールドは従来、言語のバリエーションだけでなく任意の種類のバリエーションに使用されてきました。 たとえば、Java SE Runtime Environmentで使用可能なサポートされているバリアントには、カレンダの種類や数値のスクリプトなど、別の文化的動作を示すものがあります。 BCP 47では、言語を識別しないこの種の情報は、拡張サブタグまたは私用サブタグによってサポートされています。 - 大文字と小文字の区別:
variant
では、大/小文字が区別されます。 BCP 47偏差: BCP 47では、バリアント・フィールドの大文字と小文字は区別されません。 - 構文: 整形式の
variant
値の形式は、SUBTAG (('_' | '-') SUBTAG)*
(SUBTAG = [0-9][0-9a-zA-Z]{3} | [0-9a-zA-Z]{5,8}
)です。 - BCP 47の偏差: BCP 47では、デリミタとしてハイフン('-')のみが使用され、
Locale
がより非厳密です。 - 例: "ポリ・トン" (ポリトニック語), "POSIX"
- extensions
- 言語の識別とは別の拡張を示す、単一文字キーから文字列値へのマップ。
- BCP 47の偏差:
Locale
のextensions
は、BCP 47拡張サブタグおよびプライベート使用サブタグのセマンティクスおよび構文を実装します。extensions
フィールドに空の値を指定することはできません。 - 大文字と小文字の区別:
extensions
では大/小文字は区別されませんが、Locale
では、すべての拡張キーおよび値が小文字に正規化されます。 - 構文: 整形式のキーは、セット
[0-9a-zA-Z]
の1文字です。 整形式の値は、SUBTAG ('-' SUBTAG)*
という形式です。ここで、キー「x」についてはSUBTAG =[0-9a-zA-Z]{1,8}
、ほかのキーについてはSUBTAG =[0-9a-zA-Z]{2,8}
です(つまり、「x」では単一文字のサブタグが許可されます)。 - 例: key= "u"/value= "ca-japanese" (日本語カレンダ), key= "x"/value= "java-1-7"
Locale
クラスではこの要件は検証されません。 たとえば、バリアント・コード"foobar"は5から8個の英数字で構成されているため、整形式ですが、IANA言語サブタグ・レジストリは定義されていません。 Locale.Builder
は、個々のフィールドが構文要件(整形式です)を満たしているかどうかのみをチェックしますが、値自体は検証しません。 逆に、Locale::of
とそのオーバーロードでは、入力に対する構文チェックは行われません。
Unicode BCP 47 U拡張
UTS#35「Unicode Locale Data Markup Language」では、ロケールに関連付けられているデフォルト動作をオーバーライドまたは変更するための、オプションの属性とキーワードが定義されています。 キーワードは、キーとタイプのペアで表されます。 たとえば、「nu-thai」は、数値のフォーマット(キー:「nu」)にタイのローカル数字(値:「thai」)を使用することを指定します。
キーワードは、拡張キー「u」(UNICODE_LOCALE_EXTENSION
)を使用してBCP 47拡張値にマップされます。 前述の例の"nu-thai"は、拡張子"u-nu-thai"になります。
したがって、Locale
オブジェクトにUnicodeロケール属性およびキーワードが含まれている場合、getExtension(UNICODE_LOCALE_EXTENSION)
はこの情報を表すStringを返します("nu-thai"など)。 Locale
クラスには、Unicodeロケール属性およびキー/タイプ・ペアに直接アクセスできるgetUnicodeLocaleAttributes()
、getUnicodeLocaleKeys()
およびgetUnicodeLocaleType(String)
も用意されています。 文字列で表現されたUnicodeロケール拡張では、属性がアルファベット順に一覧表示され、続いてキーとタイプがキーのアルファベット順に一覧表示されます(キーのタイプを構成するサブタグの順序は、タイプが定義されたときに固定されます)。
整形式のロケール・キーは、[0-9a-zA-Z]{2}
という形式です。 整形式のロケール・タイプは、""|[0-9a-zA-Z]{3,8} ('-' [0-9a-zA-Z]{3,8})*
という形式です(空、または3-8文字の英数字から成る一連のサブタグ)。 整形式のロケール属性は、[0-9a-zA-Z]{3,8}
という形式です(ロケール・タイプ・サブタグと同じ形式の単一のサブタグ)。
Unicodeロケール拡張は、ロケールに依存するサービスのオプションの動作を指定します。 LDML仕様ではさまざまなキーと値が定義されていますが、Java Runtime Environmentにおける実際のロケール依存サービスの実装では、特定のUnicodeロケール属性やキーとタイプのペアがサポートされていない場合があります。
デフォルトのロケール
Locale
が引数として明示的に指定されていない場合(NumberFormat.getInstance()
など)、デフォルトのロケールがlocale-sensitiveメソッドに指定されます。 デフォルトのロケールは、Javaランタイムの起動時に決定され、次の3つのフェーズで確立されます。
- 次に示すロケール関連のシステム・プロパティは、ホスト環境から確立されます。 一部のシステム・プロパティ(
user.language
を除く)には、ホスト環境からの値がない場合があります。ロケール関連のシステム・プロパティ・キー 説明 user.language
デフォルトのロケールの場合は language
("en" (英語)など)user.script
デフォルトのロケールの場合は script
("Latn" (ラテン語)など)user.country
デフォルトのロケールの場合は country
("US" (アメリカ合衆国)など)user.variant
デフォルトのロケール("POSIX"など)の場合は variant
user.extensions
デフォルトのロケールの場合は extensions
("u-ca-japanese" (日本語カレンダ)など) - これらのシステム・プロパティの値は、起動時に指定された値によってオーバーライドできます。
user.extensions
プロパティの上書き値が解析できない場合、その値は無視されます。 他のプロパティのオーバーライド値は、構文または妥当性のチェックは行われず、デフォルトのロケールで直接使用されます。 (通常、システム・プロパティ値は、ランチャの-D
コマンドライン・オプションを使用して指定できます。 たとえば、-Duser.extensions=foobarbaz
を指定すると、拡張子のないデフォルトのロケールになりますが、-Duser.language=foobarbaz
を指定すると、言語が"foobarbaz"のデフォルトのロケールになります。) - デフォルトの
Locale
インスタンスは、これらのシステム・プロパティの値から構築されます。
System.setProperties(Properties)
/ System.setProperty(String, String)
でシステム・プロパティ値を変更しても、デフォルトのロケールには影響しません。
デフォルトのロケールが確立されると、アプリケーションはgetDefault()
を使用してデフォルトのロケールを問い合せ、setDefault(Locale)
を使用して変更できます。 デフォルトのロケールがsetDefault(Locale)
で変更された場合、対応するシステム・プロパティは変更されません。 アプリケーションでは、これらのシステム・プロパティを読み取って、値が古い可能性があるため解析または解釈することはお薦めしません。
ロケール・カテゴリ
各Locale.Category
に固有の詳細なデフォルトのロケールがあります。 これらのカテゴリ固有のデフォルトのロケールは、getDefault(Category)
で照会し、setDefault(Category, Locale)
で設定できます。 これらのカテゴリ固有のデフォルトのロケールの構築は、対応するシステム・プロパティによって決定されます。このプロパティは、前述のベース・システム・プロパティで構成され、カテゴリに応じて".display"
または".format"
のサフィクスが付きます。 たとえば、user.language.display
システム・プロパティの値は、Locale.Category.DISPLAY
カテゴリのデフォルト・ロケールのlanguage
部分で使用されます。 カテゴリ固有のシステム・プロパティがない場合、前の例のuser.language
など、"category-less"システム・プロパティが使用されます。
ロケールの取得
Locale
オブジェクトを取得するには、いくつかの方法があります。 非推奨のLocale
コンストラクタは使用しないことをお薦めします。
- ロケール定数
- 一般的に使用されるロケールに対して
Locale
オブジェクトを戻す便利な定数が用意されています。 たとえば、Locale.US
は、米国のLocale
オブジェクトです。 - ファクトリ・メソッド
Locale::of
とそのオーバーロードは、指定されたlanguage
、country
またはvariant
(あるいはその両方)からLocale
オブジェクトを取得します。forLanguageTag(String)
は、整形式のBCP 47言語タグのLocale
オブジェクトを取得します。- Builder
Locale.Builder
は、BCP 47構文に準拠するLocale
オブジェクトを構築するために使用されます。 ビルダーを使用して、入力に対する構文制限を適用します。
次の呼び出しでは、すべて同等のロケール・オブジェクトが生成されます:
Locale.US;
Locale.of("en", "US");
Locale.forLanguageTag("en-US");
new Locale.Builder().setLanguage("en").setRegion("US").build();
使用例
Locale
が「取得済」になったら、それ自体についての情報を問い合せることができます。 たとえば、getCountry()
を使用して国(またはリージョン)コードを取得し、getLanguage()
を使用して言語を取得します。getDisplayCountry()
を使用して、ユーザーへの表示に適した国の名前を取得できます。 同様に、getDisplayLanguage()
を使用して、ユーザーへの表示に適した言語の名前を取得します。 getDisplayXXX
メソッド自体はlocale-sensitiveで、2つのバリアントがあります。1つは明示的なロケール・パラメータ、もう1つはなしです。 後者はデフォルトのDISPLAY
ロケールを使用するため、次のものは同等です :
Locale.getDefault().getDisplayCountry();
Locale.getDefault().getDisplayCountry(Locale.getDefault(Locale.Category.DISPLAY));
Javaプラットフォームには、ロケールに依存する操作を行ういくつかのクラスがあります。 たとえば、NumberFormat
クラスは、数値、通貨およびパーセントをlocale-sensitive形式でフォーマットします。 NumberFormat
などのクラスには、そのタイプのデフォルト・オブジェクトを作成するためのファクトリ・メソッドがいくつかあります。 これらのメソッドには通常、2つのバリアントがあります。1つは明示的なロケール・パラメータで、もう1つは指定しません。 後者はデフォルトのFORMAT
ロケールを使用するため、次のものは同等です :
NumberFormat.getCurrencyInstance();
NumberFormat.getCurrencyInstance(Locale.getDefault(Locale.Category.FORMAT));
次の例は、異なるロケールでのlocale-sensitive通貨および日付関連の操作を示しています :
var number = 1000;
NumberFormat.getCurrencyInstance(Locale.US).format(number); // returns "$1,000.00"
NumberFormat.getCurrencyInstance(Locale.JAPAN).format(number); // returns "Â¥1,000""
var date = LocalDate.of(2024, 1, 1);
DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG).localizedBy(Locale.US).format(date); // returns "January 1, 2024"
DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG).localizedBy(Locale.JAPAN).format(date); // returns "2024å¹´1æ1æ¥"
ロケール・マッチング
アプリケーションが国際化され、複数のロケールにローカライズされたリソースを提供する場合、各ユーザーの特定のプリファレンスを満たす1つ以上のロケール(または言語タグ)を検索する必要がある場合があります。 「言語タグ」 "互換的に使用される"ロケールという用語は、次のロケール一致ドキュメントに記載されています。
ユーザーの優先ロケールと言語タグのセットを照合するために、「RFC 4647言語タグのマッチング」は2つのメカニズムを定義: フィルタリングとルックアップ。 「フィルタリング」は一致するすべてのロケールを取得するために使用されますが、「ルックアップ」は一致している最適なロケールを選択することです。 マッチングは大文字と小文字の区別なしで行われます。 これらのマッチング・メカニズムについては、この後のセクションで説明します。
ユーザーの設定は言語優先度リストと呼ばれ、言語範囲のリストとして表されます。 構文的には、基本と拡張という2つのタイプの言語範囲があります。 詳細は、Locale.LanguageRange
を参照してください。
フィルタリング
フィルタリング操作はすべてのマッチングする言語タグを返します。 RFC 4647では次のように定義されています: 「フィルタリングでは、各言語範囲は受け入れ可能なマッチングである最小固有言語タグ(つまり、サブタグがもっとも少ない言語タグ)を表します。 タグのマッチング・セット内のすべての言語タグは、言語範囲以上のサブタグを持ちます。 言語範囲内のワイルドカードでないすべてのサブタグは、マッチングするすべての言語タグに出現します。」
フィルタリングには次の2つのタイプがあります: 基本言語範囲用のフィルタリング(「基本フィルタリング」といいます)と拡張言語範囲用のフィルタリング(「拡張フィルタリング」といいます)です。 これらは、指定された言語優先度リストに含まれる言語範囲の種類によって異なる結果を返す場合があります。 Locale.FilteringMode
は、フィルタリングを実行する方法を指定するパラメータです。
検索
ルックアップ操作はもっともマッチングする言語タグを返します。 RFC 4647では次のように定義されています: 「フィルタリングとは対照的に、各言語範囲は受け入れ可能なマッチであるもっとも固有なタグを表します。 最初に見つかったマッチング・タグは、ユーザーの優先度に従ってもっとも近いマッチと見なされ、返される項目です。」
たとえば、言語優先度リストが2つの言語範囲("zh-Hant-TW"
と"en-US"
、優先度順)から構成される場合は、ルックアップ・メソッドはもっともマッチングする言語タグを見つけるために次の言語タグを段階的に検索します。
前述の言語範囲に完全にマッチする言語タグがある場合、その言語タグが返されます。1. zh-Hant-TW 2. zh-Hant 3. zh 4. en-US 5. en
"*"
は特殊な言語範囲で、ルックアップ時に無視されます。
サブタグ'*'
が言語範囲に含まれるために複数の言語タグがマッチする場合は、言語タグのCollection
に対するIterator
によって返される最初のマッチする言語タグは、もっとも一致する言語タグとして処理されます。
直列化
直列化の際、拡張も含めすべてのフィールドがwriteObjectによって出力ストリームに書き込まれます。
直列化復元の際、th_TH_THおよびja_JP_JPの2つの場合のみ、「特例」で説明されている拡張がreadResolveによって追加されます。
- 実装上のノート:
互換性
リファレンス実装で提供される
Locale
の古いリリースとの相互運用性を保証するアプリケーションについては、次の解説が提供されます。ロケールの動作
互換性を維持するために、Localeの(deprecated)コンストラクタof(String, String, String)
とそのオーバーロードは、Java Runtime Environmentバージョン1.7より前の動作を保持します。 つまり、長さ制約はどの入力パラメータにも適用されません。 同様に、toString()
メソッドでも、過去の動作の同じ保存がほとんど当てはまります。toString()
の出力を言語、国およびバリアント・フィールドに以前に解析したアプリケーションは、引き続き(これは強く推奨されませんが、)を実行できます。 注意事項は、スクリプトまたは拡張が存在する場合、バリアント・フィールドに追加情報があることです。また、Localeのコンストラクタでは規定されていない構文制限がBCP 47では規定されています。 これは、ロケールとBCP 47言語タグの間の変換で、情報が失われる場合もあることを意味します。 したがって、
toLanguageTag()
は、言語、国、またはバリアントがBCP 47に準拠していないロケールの状態を表すことはできません。これらの問題のため、アプリケーションは不適合ロケールの構築から移行し、かわりに
forLanguageTag(String)
およびLocale.Builder
APIを使用することをお薦めします。 完全なロケールの文字列表現を必要とするアプリケーションは、この目的のために常にtoLanguageTag()
に依存できます。特例として
互換性を維持するため、2つの非準拠ロケールが特例として扱われます。
ja_JP_JP
およびth_TH_TH
です。 「変種」が短すぎるため、BCP 47ではこれらの形式が正しくありません。 BCP 47への移行を容易にするため、これらは構築時に特別に扱われます。 コンストラクタはこれら2つの場合に限り例外を生成し、ほかの値ではJava 7より前とまったく同様に動作します。Javaでは、
ja_JP_JP
を使用して日本で使用されている日本語を和暦とともに表しています。 Unicodeロケール・キーca
("calendar"の場合)を指定し、japanese
と入力することで、Unicodeロケール拡張を使用して表示できるようになりました。 Localeコンストラクタが引数"ja", "JP", "JP"で呼び出されると、拡張「u-ca-japanese」が自動的に追加されます。Javaでは、タイでタイ語とタイ語とともに使用されるタイ語を表すために
th_TH_TH
が使用されています。 また、Unicodeロケール・キーnu
("number"の場合)および値thai
を指定して、Unicodeロケール拡張を使用して表示できるようになりました。 Localeコンストラクタが引数"th", "TH", "TH"で呼び出されると、拡張「u-nu-thai」が自動的に追加されます。レガシー言語コード
Localeのコンストラクタは、常に3つの言語コードを以前の廃止されたフォームに変換しています:
he
はiw
にマップされ、yi
はji
にマップされ、id
はin
にマップされます。 Java SE 17以降は該当しません。 各言語が新しい形式にマップされ、iw
はhe
にマップされ、ji
はyi
にマップされ、in
はid
にマップされます。下位互換動作の場合、システム・プロパティ
java.locale.useOldISOCodes
は、動作をJava SE 17より前の動作に戻します。 システム・プロパティがtrue
に設定されている場合、現在の3つの言語コードが下位互換性のあるフォームにマップされます。 このプロパティはJavaランタイム起動時にのみ読み取られ、System.setProperty()
に対する後続のコールには影響しません。1.7で追加されたAPIは、古い言語コードと新しい言語コードの間でマッピングされ、ロケール (
getLanguage
およびtoString
が、java.locale.useOldISOCodes
システム・プロパティに依存するマップされたコードを反映するようにします)に内部でマッピングされたコードを保持しますが、BCP 47言語タグAPI (toLanguageTag
が新しいものを反映するようにします)で新しいコードを使用します。 これにより、ロケールの構築に使用されるコードやAPIにかかわらず、ロケール間の等価関係が維持されます。 Javaのデフォルト・リソース・バンドルのルックアップ・メカニズムはこのマッピングも実装するため、どちらかの命名規則でもリソースの名前を指定できます。ResourceBundle.Control
を参照してください。- 導入されたバージョン:
- 1.1
- 外部仕様
- 関連項目:
-
ネストされたクラスのサマリー
ネストされたクラス修飾子と型クラス説明static final class
Builder
は、setterによって構成される値からLocale
のインスタンスを構築するために使用されます。static enum
ロケール・カテゴリの列挙型です。static enum
この列挙型は、ロケール照合のフィルタ・モードを選択するための定数を指定します。static enum
ISO 3166で定義されている型を指定する列挙型。static final class
このクラスはRFC 4647言語タグの照合に定義されている言語範囲を表します。 -
フィールドのサマリー
フィールド修飾子と型フィールド説明static final Locale
国に使用する定数です。static final Locale
国に使用する定数です。static final Locale
国に使用する定数です。static final Locale
言語に使用する定数です。static final Locale
言語に使用する定数です。static final Locale
国に使用する定数です。static final Locale
言語に使用する定数です。static final Locale
言語に使用する定数です。static final Locale
国に使用する定数です。static final Locale
言語に使用する定数です。static final Locale
国に使用する定数です。static final Locale
国に使用する定数です。static final Locale
言語に使用する定数です。static final Locale
国に使用する定数です。static final Locale
言語に使用する定数です。static final Locale
国に使用する定数です。static final char
私用拡張用のキー(「x」)です。static final Locale
ルート・ロケールに使用される定数です。static final Locale
言語に使用する定数です。static final Locale
国に使用する定数です。static final Locale
言語に使用する定数です。static final Locale
国に使用する定数です。static final char
Unicodeロケール拡張用のキーです(「u」)。static final Locale
国に使用する定数です。 -
コンストラクタのサマリー
コンストラクタ -
メソッドのサマリー
修飾子と型メソッド説明使用可能なロケールのストリームを返します。static String
caseFoldLanguageTag
(String languageTag) 折りたたまれたIETF BCP 47言語タグを返します。clone()
Cloneableをオーバーライドします。boolean
このLocaleがもう一方のオブジェクトと等しい場合にtrueを返します。filter
(List<Locale.LanguageRange> priorityList, Collection<Locale> locales) RFC 4647に定義されているフィルタリング・メカニズムを使用して、一致するLocale
インスタンスのリストを返します。filter
(List<Locale.LanguageRange> priorityList, Collection<Locale> locales, Locale.FilteringMode mode) RFC 4647に定義されているフィルタリング・メカニズムを使用して、一致するLocale
インスタンスのリストを返します。filterTags
(List<Locale.LanguageRange> priorityList, Collection<String> tags) RFC 4647に定義されている基本フィルタリング・メカニズムを使用して、一致する言語タグのリストを返します。filterTags
(List<Locale.LanguageRange> priorityList, Collection<String> tags, Locale.FilteringMode mode) RFC 4647に定義されている基本フィルタリング・メカニズムを使用して、一致する言語タグのリストを返します。static Locale
forLanguageTag
(String languageTag) 指定されたIETF BCP 47言語タグ文字列を表すロケールを返します。static Locale[]
使用可能なロケールの配列を返します。このロケールの国/地域コードを返します。これは、空の文字列、2文字の大文字のISO 3166コード、または3桁のUN M.49コードのいずれかになります。static Locale
Java Virtual Machineのこのインスタンスのdefault locale
の現在の値を取得します。static Locale
getDefault
(Locale.Category category) Java Virtual Machineのこのインスタンスの指定されたカテゴリのdefault locale
の現在の値を取得します。final String
ユーザーへの表示に適した、ロケールの国の名前を返します。getDisplayCountry
(Locale inLocale) ユーザーへの表示に適した、ロケールの国の名前を返します。final String
ユーザーへの表示に適した、ロケールの言語の名前を返します。getDisplayLanguage
(Locale inLocale) ユーザーへの表示に適した、ロケールの言語の名前を返します。final String
ユーザーへの表示に適した、ロケールの名前を返します。getDisplayName
(Locale inLocale) ユーザーへの表示に適した、ロケールの名前を返します。ユーザーへの表示に適した、ロケールのスクリプトの名前を返します。getDisplayScript
(Locale inLocale) ユーザーへの表示に適した、ロケールのスクリプトの名前を返します。final String
ユーザーへの表示に適した、ロケールのバリアント・コードの名前を返します。getDisplayVariant
(Locale inLocale) ユーザーへの表示に適した、ロケールのバリアント・コードの名前を返します。getExtension
(char key) 指定されたキーに関連付けられた拡張(つまり私用)値を返します。キーに関連付けられた拡張がない場合はnullを返します。このロケールに関連付けられた拡張キーのセットを返します。拡張が含まれていない場合は空のセットを返します。このロケールの国の3文字の略称を返します。このロケールの言語の3文字の省略形を返します。static String[]
ISO 3166で定義されている2桁の国コードのリストを返します。指定したタイプのISO3166国コードのSet
を返します。static String[]
ISO 639で定義されている2桁の言語コードのリストを返します。このLocaleの言語コードを返します。このロケールのスクリプトを返します。これは、空の文字列または4文字のISO 15924スクリプト・コードのどちらかになります。このロケールに関連付けられたUnicodeロケール属性のセットを返します。属性がない場合は空のセットを返します。このロケールで定義されたUnicodeロケール・キーのセットを返します。このロケールにない場合は空のセットを返します。このロケールの指定されたUnicodeロケール・キーに関連付けられたUnicodeロケール・タイプを返します。このロケールのバリアント・コードを返します。boolean
このLocale
に「拡張機能」がある場合は、true
を返します。int
hashCode()
hashCodeをオーバーライドします。static Locale
lookup
(List<Locale.LanguageRange> priorityList, Collection<Locale> locales) RFC 4647で定義されている検索メカニズムを使用してもっとも一致する言語タグのLocale
インスタンスを返します。static String
lookupTag
(List<Locale.LanguageRange> priorityList, Collection<String> tags) RFC 4647で定義されている検索メカニズムを使用してもっとも一致する言語タグを返します。static Locale
言語コードからロケールを取得します。static Locale
言語および国からロケールを取得します。static Locale
言語、国、バリアントからロケールを取得します。static void
setDefault
(Locale newLocale) Java Virtual Machineのこのインスタンスのdefault locale
を設定します。static void
setDefault
(Locale.Category category, Locale newLocale) Java Virtual Machineのこのインスタンスに対して指定されたカテゴリのdefault locale
を設定します。このLocale
のコピーを「拡張機能」なしで返します。このロケールを表す、整形式のIETF BCP 47言語タグを返します。final String
toString()
次のように、言語、国、バリアント、スクリプトおよび拡張機能で構成される、このLocale
オブジェクトの文字列表現を返します: language + "_" + country + "_" + (variant + "_#" | "#") + script + "_" + extensions Languageは常に小文字、countryは常に大文字、scriptは常に大文字、extensionは常に小文字です。
-
フィールド詳細
-
ENGLISH
public static final Locale ENGLISH言語に使用する定数です。 -
FRENCH
public static final Locale FRENCH言語に使用する定数です。 -
GERMAN
public static final Locale GERMAN言語に使用する定数です。 -
ITALIAN
public static final Locale ITALIAN言語に使用する定数です。 -
JAPANESE
public static final Locale JAPANESE言語に使用する定数です。 -
KOREAN
public static final Locale KOREAN言語に使用する定数です。 -
CHINESE
public static final Locale CHINESE言語に使用する定数です。 -
SIMPLIFIED_CHINESE
public static final Locale SIMPLIFIED_CHINESE言語に使用する定数です。 -
TRADITIONAL_CHINESE
public static final Locale TRADITIONAL_CHINESE言語に使用する定数です。 -
FRANCE
public static final Locale FRANCE国に使用する定数です。 -
GERMANY
public static final Locale GERMANY国に使用する定数です。 -
ITALY
public static final Locale ITALY国に使用する定数です。 -
JAPAN
public static final Locale JAPAN国に使用する定数です。 -
KOREA
public static final Locale KOREA国に使用する定数です。 -
UK
public static final Locale UK国に使用する定数です。 -
US
public static final Locale US国に使用する定数です。 -
CANADA
public static final Locale CANADA国に使用する定数です。 -
CANADA_FRENCH
public static final Locale CANADA_FRENCH国に使用する定数です。 -
ROOT
public static final Locale ROOTルート・ロケールに使用される定数です。 ルート・ロケールは、言語、国、およびバリアントが空(「」)の文字列であるロケールです。 これはすべてのロケールの基底ロケールとみなされ、ロケールに依存するオペレーションで言語/国に中立のロケールとして使用されます。- 導入されたバージョン:
- 1.6
-
CHINA
public static final Locale CHINA国に使用する定数です。 -
PRC
public static final Locale PRC国に使用する定数です。 -
TAIWAN
public static final Locale TAIWAN国に使用する定数です。 -
PRIVATE_USE_EXTENSION
public static final char PRIVATE_USE_EXTENSION私用拡張用のキー(「x」)です。- 導入されたバージョン:
- 1.7
- 関連項目:
-
UNICODE_LOCALE_EXTENSION
public static final char UNICODE_LOCALE_EXTENSIONUnicodeロケール拡張用のキーです(「u」)。- 導入されたバージョン:
- 1.7
- 関連項目:
-
-
コンストラクタの詳細
-
Locale
@Deprecated(since="19") public Locale(String language, String country, String variant) 非推奨。Localeコンストラクタは非推奨になりました。 その他のオプションについては、「ロケールの取得」を参照してください。言語、国、およびバリアントからロケールを構築します。 このコンストラクタは、言語の値を小文字に正規化し、国の値を大文字に正規化します。- 実装上のノート:
- 廃止されたISO 639コード("iw"、"ji"および"in")は、現在のフォームにマップされます。 詳細については、「レガシー言語コード」を参照してください。
- 下位互換性の理由で、このコンストラクタは入力に対して構文チェックは行いません。
- ("ja", "JP", "JP")と("th", "TH", "TH")の2つの場合は特別に処理されます。詳細は、「特例」を参照してください。
- パラメータ:
language
- ISO 639 alpha-2またはalpha-3言語コード、または最高8文字の言語のサブタグ。 言語の有効な値については、Locale
クラスの説明を参照。country
- ISO 3166 alpha-2の国コードまたはUN M.49 numeric-3の地域コード。 国の有効な値については、Locale
クラスの説明を参照。variant
-Locale
のバリエーションを示すために使用される任意の値。 詳細は、Locale
クラスの説明を参照。- スロー:
NullPointerException
- いずれかの引数がnullの場合にスローされる。
-
Locale
@Deprecated(since="19") public Locale(String language, String country) 非推奨。Localeコンストラクタは非推奨になりました。 その他のオプションについては、「ロケールの取得」を参照してください。言語および国からロケールを構築します。 このコンストラクタは、言語の値を小文字に正規化し、国の値を大文字に正規化します。- 実装上のノート:
- 廃止されたISO 639コード("iw"、"ji"および"in")は、現在のフォームにマップされます。 詳細については、「レガシー言語コード」を参照してください。
- 下位互換性の理由で、このコンストラクタは入力に対して構文チェックは行いません。
- パラメータ:
language
- ISO 639 alpha-2またはalpha-3言語コード、または最高8文字の言語のサブタグ。 言語の有効な値については、Locale
クラスの説明を参照。country
- ISO 3166 alpha-2の国コードまたはUN M.49 numeric-3の地域コード。 国の有効な値については、Locale
クラスの説明を参照。- スロー:
NullPointerException
- どちらかの引数がnullの場合にスローされる。
-
Locale
@Deprecated(since="19") public Locale(String language) 非推奨。Localeコンストラクタは非推奨になりました。 その他のオプションについては、「ロケールの取得」を参照してください。言語コードからロケールを構築します。 このコンストラクタは、言語の値を小文字に正規化します。- 実装上のノート:
- 廃止されたISO 639コード("iw"、"ji"および"in")は、現在のフォームにマップされます。 詳細については、「レガシー言語コード」を参照してください。
- 下位互換性の理由で、このコンストラクタは入力に対して構文チェックは行いません。
- パラメータ:
language
- ISO 639 alpha-2またはalpha-3言語コード、または最高8文字の言語のサブタグ。 言語の有効な値については、Locale
クラスの説明を参照。- スロー:
NullPointerException
- 引数がnullの場合にスローされる。- 導入されたバージョン:
- 1.4
-
-
メソッドの詳細
-
of
言語、国、バリアントからロケールを取得します。 このメソッドは、言語値を小文字に、国値を大文字に正規化します。- 実装上のノート:
- このメソッドでは、入力に対する構文チェックは行われません。 BCP47を使用した完全な構文チェックには、
Locale.Builder
を使用します。 - ("ja", "JP", "JP")と("th", "TH", "TH")の2つの場合は特別に処理されます。詳細は、「特例」を参照してください。
- 廃止されたISO 639コード("iw"、"ji"および"in")は、現在のフォームにマップされます。 詳細については、「レガシー言語コード」を参照してください。
- このメソッドでは、入力に対する構文チェックは行われません。 BCP47を使用した完全な構文チェックには、
- パラメータ:
language
- 言語コード。 language値のLocale
クラスの説明を参照してください。country
- 国コード。 country値のLocale
クラスの説明を参照してください。variant
-Locale
のバリエーションを示すために使用される任意の値。 「バリアント」値のLocale
クラスの説明を参照してください。- 戻り値:
Locale
オブジェクト- スロー:
NullPointerException
- いずれかの引数がnullの場合にスローされる。- 導入されたバージョン:
- 19
-
of
言語および国からロケールを取得します。 このメソッドは、言語値を小文字に、国値を大文字に正規化します。- 実装上のノート:
- このメソッドでは、入力に対する構文チェックは行われません。 BCP47を使用した完全な構文チェックには、
Locale.Builder
を使用します。 - 廃止されたISO 639コード("iw"、"ji"および"in")は、現在のフォームにマップされます。 詳細については、「レガシー言語コード」を参照してください。
- このメソッドでは、入力に対する構文チェックは行われません。 BCP47を使用した完全な構文チェックには、
- パラメータ:
language
- 言語コード。 language値のLocale
クラスの説明を参照してください。country
- 国コード。 country値のLocale
クラスの説明を参照してください。- 戻り値:
Locale
オブジェクト- スロー:
NullPointerException
- どちらかの引数がnullの場合にスローされる。- 導入されたバージョン:
- 19
-
of
言語コードからロケールを取得します。 このメソッドは、言語の値を小文字に正規化します。- 実装上のノート:
- このメソッドでは、入力に対する構文チェックは行われません。 BCP47を使用した完全な構文チェックには、
Locale.Builder
を使用します。 - 廃止されたISO 639コード("iw"、"ji"および"in")は、現在のフォームにマップされます。 詳細については、「レガシー言語コード」を参照してください。
- このメソッドでは、入力に対する構文チェックは行われません。 BCP47を使用した完全な構文チェックには、
- パラメータ:
language
- 言語コード。 language値のLocale
クラスの説明を参照してください。- 戻り値:
Locale
オブジェクト- スロー:
NullPointerException
- 引数がnullの場合にスローされる。- 導入されたバージョン:
- 19
-
getDefault
public static Locale getDefault()Java Virtual Machineのこのインスタンスのdefault locale
の現在の値を取得します。Java仮想マシンでは、ホスト環境に基づいて起動時にデフォルト・ロケールが設定されます。 ロケールが明示的に指定されていない場合、ロケールに依存するメソッドの多くでデフォルト・ロケールが使用されます。 これは、
setDefault(Locale)
メソッドを使用して変更できます。- 戻り値:
- Java Virtual Machineのこのインスタンスのデフォルト・ロケール
-
getDefault
public static Locale getDefault(Locale.Category category) Java Virtual Machineのこのインスタンスの指定されたカテゴリのdefault locale
の現在の値を取得します。Java仮想マシンでは、ホスト環境に基づいて起動時にデフォルト・ロケールが設定されます。 ロケールが明示的に指定されていない場合、ロケールに依存するメソッドの多くでデフォルト・ロケールが使用されます。 これは、
setDefault(Locale.Category, Locale)
メソッドを使用して変更できます。- パラメータ:
category
- デフォルト・ロケールを取得するために指定されたカテゴリ- 戻り値:
- Java仮想マシンのこのインスタンスの、指定されたカテゴリ用のデフォルト・ロケール
- スロー:
NullPointerException
- カテゴリがnullの場合- 導入されたバージョン:
- 1.7
- 関連項目:
-
setDefault
public static void setDefault(Locale newLocale) Java Virtual Machineのこのインスタンスのdefault locale
を設定します。 これは、ホスト・ロケールには影響しません。Java仮想マシンでは、ホスト環境に基づいて起動時にデフォルト・ロケールが設定されます。 ロケールが明示的に指定されていない場合、ロケールに依存するメソッドの多くでデフォルト・ロケールが使用されます。
デフォルト・ロケールの変更はさまざまな機能の領域に影響する可能性があるため、このメソッドは、同じJava仮想マシンで実行されるロケール依存コードを呼出し側が再初期化できる場合にだけ使用するようにしてください。
このメソッドでデフォルト・ロケールを設定すると、各カテゴリのすべてのデフォルト・ロケールも指定のデフォルト・ロケールに設定されます。
- パラメータ:
newLocale
- 新しいデフォルトのロケール- スロー:
NullPointerException
-newLocale
がnullである場合
-
setDefault
public static void setDefault(Locale.Category category, Locale newLocale) Java Virtual Machineのこのインスタンスに対して指定されたカテゴリのdefault locale
を設定します。 これは、ホスト・ロケールには影響しません。Java仮想マシンでは、ホスト環境に基づいて起動時にデフォルト・ロケールが設定されます。 ロケールが明示的に指定されていない場合、ロケールに依存するメソッドの多くでデフォルト・ロケールが使用されます。
デフォルト・ロケールの変更はさまざまな機能の領域に影響する可能性があるため、このメソッドは、同じJava仮想マシンで実行されるロケール依存コードを呼出し側が再初期化できる場合にだけ使用するようにしてください。
- パラメータ:
category
- デフォルト・ロケールを設定するために指定されたカテゴリnewLocale
- 新しいデフォルトのロケール- スロー:
NullPointerException
- categoryおよび/またはnewLocaleがnullの場合- 導入されたバージョン:
- 1.7
- 関連項目:
-
getAvailableLocales
public static Locale[] getAvailableLocales()使用可能なロケールの配列を返します。 返される配列は、Javaランタイム環境およびデプロイされたLocaleServiceProvider
実装によってサポートされるロケールの和集合を表します。 少なくとも、返される配列には、Locale.ROOT
に等しいLocale
インスタンスと、Locale.US
に等しいLocale
インスタンスが含まれている必要があります。- 戻り値:
- 使用可能なロケールの配列
-
availableLocales
使用可能なロケールのストリームを返します。 返されるストリームは、Javaランタイム環境およびデプロイされたLocaleServiceProvider
実装によってサポートされるロケールの和集合を表します。 少なくとも、返されるストリームには、Locale.ROOT
と等しいLocale
インスタンス、およびLocale.US
と等しいLocale
インスタンスが含まれている必要があります。- 実装上のノート:
getAvailableLocales()
とは異なり、このメソッドは、Locale配列の防御的なコピーを作成しません。- 戻り値:
- 使用可能なロケールのストリーム
- 導入されたバージョン:
- 21
-
getISOCountries
public static String[] getISOCountries()ISO 3166で定義されている2桁の国コードのリストを返します。 ロケールの取得に使用できます。 このメソッドは、type
Locale.IsoCountryCode.PART1_ALPHA2
を使用したgetISOCountries(Locale.IsoCountryCode type)
と同等です。ノート:
Locale
クラスは、3桁の数字のUN M.49地域コードなど、国(地域)用のほかのコードもサポートしています。 したがって、このメソッドによって返されるリストには、ロケールを取得するために使用できる有効なコードがすべて含まれていません。このメソッドは、廃止された2文字の国コードを返さないことに注意してください。 ISO3166-3これらの廃止されたコードの国コードを指定するコードは、
type
Locale.IsoCountryCode.PART3
を使用してgetISOCountries(Locale.IsoCountryCode type)
から取得できます。- 戻り値:
- ISO 3166の2文字国コードの配列。
-
getISOCountries
public static Set<String> getISOCountries(Locale.IsoCountryCode type) 指定したタイプのISO3166国コードのSet
を返します。- パラメータ:
type
-Locale.IsoCountryCode
は、ISOコード・タイプを指定します。- 戻り値:
- 指定したタイプのISO3166国コードの
Set
- スロー:
NullPointerException
- typeがnullの場合- 導入されたバージョン:
- 9
- 関連項目:
-
getISOLanguages
public static String[] getISOLanguages()ISO 639で定義されている2桁の言語コードのリストを返します。 ロケールの取得に使用できます。ノート:
- ISO 639は安定した規格ではありません。一部の言語のコードは変更されています。 この関数が返すリストには、コードが変更された言語の新しいコードと従来のコードの両方が含まれています。
Locale
クラスは、8文字までの長さの言語コードもサポートしています。 したがって、このメソッドによって返されるリストには、ロケールを取得するために使用できる有効なコードがすべて含まれていません。
- 戻り値:
- ISO 639 2文字の言語コードの配列。
-
getLanguage
public String getLanguage()このLocaleの言語コードを返します。- 実装上のノート:
- このメソッドは、廃止されたISO 639コード("iw"、"ji"および"in")の新しいフォームを返します。 詳細については、「レガシー言語コード」を参照してください。
- 戻り値:
- 言語コード。定義されたものがない場合は空の文字列。
- 関連項目:
-
getScript
public String getScript()このロケールのスクリプトを返します。これは、空の文字列または4文字のISO 15924スクリプト・コードのどちらかになります。 最初の文字は大文字、残りの文字は小文字で、たとえば「Latn」や「Cyrl」のようになります。- 戻り値:
- スクリプト・コード。定義されたものがない場合は空の文字列。
- 導入されたバージョン:
- 1.7
- 関連項目:
-
getCountry
public String getCountry()このロケールの国/地域コードを返します。これは、空の文字列、2文字の大文字のISO 3166コード、または3桁のUN M.49コードのいずれかになります。- 戻り値:
- 国/地域コード。定義されたものがない場合は空の文字列。
- 関連項目:
-
getVariant
-
hasExtensions
public boolean hasExtensions()このLocale
に「拡張機能」がある場合は、true
を返します。- 戻り値:
- この
Locale
が拡張を持つ場合はtrue
- 導入されたバージョン:
- 1.8
-
stripExtensions
-
getExtension
public String getExtension(char key) 指定されたキーに関連付けられた拡張(つまり私用)値を返します。キーに関連付けられた拡張がない場合はnullを返します。 整形式となるためには、キーは[0-9A-Za-z]
の1つである必要があります。 キーの大文字と小文字は区別されないため、たとえば「z」と「Z」は同じ拡張を表します。- パラメータ:
key
- 拡張キー- 戻り値:
- 拡張。指定されたキーの拡張がこのロケールで定義されていない場合はnull。
- スロー:
IllegalArgumentException
- キーが整形式でない場合- 導入されたバージョン:
- 1.7
- 関連項目:
-
getExtensionKeys
-
getUnicodeLocaleAttributes
-
getUnicodeLocaleType
このロケールの指定されたUnicodeロケール・キーに関連付けられたUnicodeロケール・タイプを返します。 キーのタイプが定義されていない場合は、空の文字列を返します。 キーが定義されていない場合はnullを返します。 キーの大文字と小文字は区別されません。 キーは2つの英数字([0-9a-zA-Z])である必要があり、そうでない場合はIllegalArgumentExceptionがスローされます。- パラメータ:
key
- Unicodeロケール・キー- 戻り値:
- キーに関連付けられたUnicodeロケール・タイプ。キーがこのロケールで定義されていない場合はnull。
- スロー:
IllegalArgumentException
- キーが整形式でない場合NullPointerException
-key
がnullである場合- 導入されたバージョン:
- 1.7
-
getUnicodeLocaleKeys
-
toString
public final String toString()このLocale
オブジェクトの文字列表現(次のように言語、国、バリアント、スクリプト、および拡張から成る)を返します。language + "_" + country + "_" + (variant + "_#" | "#") + script + "_" + extensions
言語は常に小文字、国は常に大文字、スクリプトは常にタイトル・ケース、拡張は常に小文字になります。 拡張サブタグおよび私用サブタグは、toLanguageTag()
で説明されている正規の順序になります。ロケールにスクリプトも拡張も含まれていない場合、結果はJava 6以前と同じです。
言語フィールドと国フィールドの両方がない場合、バリアント、スクリプトまたは拡張フィールド(バリアントのみを含むロケールは許可されません。バリアントは整形式の言語または国コードを伴う必要があります)が存在していても、この関数は空の文字列を返します。
スクリプトまたは拡張が含まれている場合で、バリアントが欠落しているときは、「#」の前に下線は付加されません。
この動作は、デバッグをサポートするためと、言語、国、およびバリアント・フィールドだけが想定されていた以前の
toString
の使用方法との互換性を保つために設計されています。 相互交換のためにLocaleをStringで表現するには、toLanguageTag()
を使用してください。例:
en
de_DE
_GB
en_US_WIN
de__POSIX
zh_CN_#Hans
zh_TW_#Hant_x-java
th_TH_TH_#u-nu-thai
-
toLanguageTag
public String toLanguageTag()このロケールを表す、整形式のIETF BCP 47言語タグを返します。この
Locale
に、IETF BCP 47言語タグの構文要件を満たさない言語、国、またはバリアントが含まれている場合、このメソッドはこれらのフィールドを次のように処理します。言語: 言語が空の場合または整形式でない場合(「a」や「e2」など)、言語は「und」(Undetermined)として出力されます。
国: 国が整形式でない場合(「12」や「USA」など)、国は省略されます。
バリアント: バリアントが整形式である場合、各サブセグメント(「-」または「_」で区切られている)がサブタグとして出力されます。 そうでない場合は、次のようになります。
- すべてのサブセグメントが
[0-9a-zA-Z]{1,8}
に一致する場合(「WIN」や「Oracle_JDK_Standard_Edition」など)、整形式でない最初のサブセグメントおよびそれに続くすべてのサブセグメントが、私用サブタグに追加されます。 追加される最初のサブタグは「lvariant」で、そのあとにサブセグメントが順に、ハイフンで区切られて追加されます。 たとえば、「x-lvariant-WIN」、「Oracle-x-lvariant-JDK-Standard-Edition」となります。 - いずれかのサブセグメントが
[0-9a-zA-Z]{1,8}
に一致しない場合、バリアントは切り詰められ、問題のあるサブセグメントおよびそれに続くすべてのサブセグメントが省略されます。 残ったものが空でない場合は、それが上記のように私用サブタグとして出力されます(残ったものが整形式となった場合でも)。 たとえば、「Solaris_isjustthecoolestthing」は、「solaris」ではなく「x-lvariant-Solaris」として出力されます。
特殊変換: Javaでは、非推奨のISO言語コードを含め、いくつかの古いロケール表現が互換性のためにサポートされています。 このメソッドは、次の変換を実行します。
- 非推奨のISO言語コード「iw」、「ji」、および「in」は、それぞれ「he」、「yi」、および「id」に変換されます。
- ロケールの言語が「no」、国が「NO」、およびバリアントが「NY」の場合(ノルウェー語ニーノシク(ノルウェー)を表す)、ロケールは言語タグ「nn-NO」に変換されます。
ノート: このメソッドで取得される言語タグは、整形式の(IETF BCP 47仕様で定義されている構文要件を満たす)ですが、必ずしも有効なBCP 47言語タグではありません。 たとえば、
Locale.forLanguageTag("xx-YY").toLanguageTag();
- 戻り値:
- ロケールを表すBCP47言語タグ
- 導入されたバージョン:
- 1.7
- 関連項目:
- すべてのサブセグメントが
-
caseFoldLanguageTag
折りたたまれたIETF BCP 47言語タグを返します。このメソッドは、セクション2.1.1に準拠する大/小文字の規則を使用して、言語タグをフォーマットします。 RFC5646の言語タグの書式設定。 この書式は次のように定義されています: 拡張子およびプライベート使用サブタグを含むAllサブタグは、2つの例外を除いて小文字を使用: タグの先頭でもシングルトンの後にも表示されない2文字および4文字のサブタグ。 このような2文字のサブタグは、すべて大文字の(タグ"en-CA-x-ca"または"sgn-BE-FR"のように)で、4文字のサブタグはタイトル・ケース(タグ"az-Latn-x-latn"のように)です。 レガシー・タグとして、(RFC5646で"風化け"として定義されます)は必ずしも整形式とはかぎりません。このメソッドでは、それぞれの
Legacy tags
表に指定された特定のタグの正確な大/小文字表記規則に一致するように、レガシー・タグを折り返します。特別な例外
大文字と小文字が区別される
variant
との整合性を維持するために、このメソッドでは、大文字と小文字の折畳み式のバリアント・サブタグおよびlvariant
のプレフィクスが付いた大/小文字の折畳み式のプライベート使用サブタグは使用されません。たとえば、
String tag = "ja-kana-jp-x-lvariant-Oracle-JDK-Standard-Edition"; Locale.caseFoldLanguageTag(tag); // returns "ja-Kana-JP-x-lvariant-Oracle-JDK-Standard-Edition" String tag2 = "ja-kana-jp-x-Oracle-JDK-Standard-Edition"; Locale.caseFoldLanguageTag(tag2); // returns "ja-Kana-JP-x-oracle-jdk-standard-edition"
ケースの折りたたみを除外すると、このメソッドはタグ自体を変更しません。 言語タグの大文字と小文字は意味を持たず、次のようなさまざまなISO標準に対応しているため、単に推奨されます: ISO639-1、ISO15924およびISO3166-1。
大文字と小文字の書式設定は特定のサブタグの位置に依存するため、このメソッドの呼出し元は言語タグが整形式であることを確認する必要があります(セクション2.1に準拠)。 RFC5646の構文)。
- パラメータ:
languageTag
- IETF BCP 47言語タグ。- 戻り値:
- ケース折り畳みIETF BCP 47言語タグ
- スロー:
IllformedLocaleException
-languageTag
が整形式でない場合NullPointerException
-languageTag
がnull
の場合- 導入されたバージョン:
- 21
- 外部仕様
-
forLanguageTag
指定されたIETF BCP 47言語タグ文字列を表すロケールを返します。指定された言語タグに整形式でないサブタグが含まれている場合、整形式でない最初のサブタグおよびそれに続くすべてのサブタグが無視されます。 この場合は例外をスローする
Locale.Builder.setLanguageTag(String)
と比較してください。次の変換が実行されます。
- 言語コード「und」は言語""にマップされます。
- 言語コード"iw"、"ji"および"in"は、それぞれ"今日は"、"yi"および"id"にマップされます。 (これは、Localeのコンストラクタで実行されるものと同じ正規化です。) 詳細については、「レガシー言語コード」を参照してください。
- 私用サブタグに接頭辞「lvariant」が付加された部分がある場合、その部分は削除され、結果のロケールのバリアント・フィールドに付加されます(大文字小文字の正規化なし)。 それによって空になる場合、私用サブタグは破棄されます。
Locale loc; loc = Locale.forLanguageTag("en-US-x-lvariant-POSIX"); loc.getVariant(); // returns "POSIX" loc.getExtension('x'); // returns null loc = Locale.forLanguageTag("de-POSIX-x-URP-lvariant-Abc-Def"); loc.getVariant(); // returns "POSIX_Abc_Def" loc.getExtension('x'); // returns "urp"
- languageTag引数に拡張言語サブタグが含まれている場合、最初の拡張言語サブタグが言語として使用され、プライマリ言語サブタグとほかの拡張言語サブタグは無視されます。
Locale.forLanguageTag("ar-aao").getLanguage(); // returns "aao" Locale.forLanguageTag("en-abc-def-us").toString(); // returns "abc_US"
- バリアント・タグは変更されませんが、それ以外には大文字小文字の正規化が行われます。 言語は小文字、スクリプトはタイトル・ケース、国は大文字、拡張は小文字に正規化されます。
- 処理後のロケールが拡張を含まず、ja_JP_JPまたはth_TH_THに正確に一致する場合は、コンストラクタが呼び出されたかのように適切な拡張が追加されます。
Locale.forLanguageTag("ja-JP-x-lvariant-JP").toLanguageTag(); // returns "ja-JP-u-ca-japanese-x-lvariant-JP" Locale.forLanguageTag("th-TH-x-lvariant-TH").toLanguageTag(); // returns "th-TH-u-nu-thai-x-lvariant-TH"
標準置換を含むレガシー・タグは次のとおりです:
レガシー・タグ 最新の代替 art-lojban jbo i-ami ami i-bnn bnn i-hak hak i-klingon tlh i-lux ポンド i-navajo nv i-pwn pwn i-tao tao i-tay tay i-tsu tsu no-bok nb no-nyn nn sgn-BE-FR sfb sgn-BE-NL vgt sgn-CH-DE sgg zh-guoyu cmn zh-hakka hak zh-min-nan nan zh-xiang hsn 最新の置換なしのレガシー・タグは、次のように変換されます:
レガシー・タグ 変換後 cel-gaulish xtg-x-cel-gaulish en-GB-oed en-GB-x-oed i-default en-x-i-default i-enochian und-x-i-enochian i-mingo see-x-i-mingo zh-min nan-x-zh-min すべてのレガシー・タグのリストは、IANA言語サブタグ・レジストリを参照してください("型: grandfathered"を検索)。
ノート:
toLanguageTag
とforLanguageTag
で元に戻る保証はありません。- パラメータ:
languageTag
- 言語タグ- 戻り値:
- 言語タグをもっとも適切に表すロケール。
- スロー:
NullPointerException
-languageTag
がnull
の場合- 導入されたバージョン:
- 1.7
- 関連項目:
-
getISO3Language
public String getISO3Language() throws MissingResourceExceptionこのロケールの言語の3文字の省略形を返します。 言語がISO 639-1の2文字コードに一致する場合、3つの小文字から成る対応するISO 639-2/Tコードが返されます。 ISO 639-2言語コードはオンラインで見つかります。「Codes for the Representation of Names of Languages Part 2: Alpha-3 Code」を参照してください。 ロケールが3文字で言語を指定している場合は、言語がそのまま返されます。 ロケールが言語を指定していない場合は、空の文字列が返されます。- 戻り値:
- このロケールの言語の3文字の略語
- スロー:
MissingResourceException
- このロケールに3文字の言語省略形がない場合、MissingResourceExceptionがスローされる。
-
getISO3Country
public String getISO3Country() throws MissingResourceExceptionこのロケールの国の3文字の略称を返します。 国がISO 3166-1 alpha-2コードに一致する場合、大文字から成る対応するISO 3166-1 alpha-3コードが返されます。 ロケールが国を指定していない場合は、空の文字列が返されます。ISO 3166-1コードはオンラインで参照できます。
- 戻り値:
- このロケールの国の3文字の略語
- スロー:
MissingResourceException
- このロケールに3文字の国省略形がない場合、MissingResourceExceptionがスローされる。
-
getDisplayLanguage
public final String getDisplayLanguage()ユーザーへの表示に適した、ロケールの言語の名前を返します。 可能な場合は、返される名前はデフォルトDISPLAY
ロケール用にローカライズされます。 たとえば、ロケールがfr_FRでデフォルトDISPLAY
ロケールがen_USの場合、getDisplayLanguage()はFrenchを返します。ロケールがen_USでデフォルトDISPLAY
ロケールがfr_FRの場合、getDisplayLanguage()はanglaisを返します。 返された名前をデフォルトのDISPLAY
ロケールにローカライズできない場合、この関数は英語の名前に戻り、ISOコードをlast-resort値として使用します。 ロケールが言語を指定していない場合は、この関数は空の文字列を返します。- 戻り値:
- 表示言語の名前。
-
getDisplayLanguage
ユーザーへの表示に適した、ロケールの言語の名前を返します。 可能な場合、返される名前はinLocaleに従ってローカライズされます。 たとえば、ロケールがfr_FRでinLocaleがen_USの場合、getDisplayLanguage()は「French」を返し、ロケールがen_USでinLocaleがfr_FRの場合、getDisplayLanguage()は「anglais」を返します。 返された名前をinLocaleに従ってローカライズできない場合、この関数は英語の名前に戻り、最後にISOコードに最終ソート値として戻ります。 ロケールが言語を指定していない場合は、この関数は空の文字列を返します。- パラメータ:
inLocale
- 取得する表示言語のロケール。- 戻り値:
- 指定されたロケールに適した表示言語の名前。
- スロー:
NullPointerException
-inLocale
がnull
である場合
-
getDisplayScript
-
getDisplayScript
ユーザーへの表示に適した、ロケールのスクリプトの名前を返します。 可能な場合は、名前は指定されたロケールにローカライズされます。 このロケールがスクリプト・コードを指定していない場合は、空の文字列を返します。- パラメータ:
inLocale
- 取得する表示スクリプトのロケール。- 戻り値:
- 現在のデフォルト
DISPLAY
ロケール用のスクリプト・コードの表示名 - スロー:
NullPointerException
-inLocale
がnull
である場合- 導入されたバージョン:
- 1.7
-
getDisplayCountry
public final String getDisplayCountry()ユーザーへの表示に適した、ロケールの国の名前を返します。 可能な場合は、返される名前はデフォルトDISPLAY
ロケール用にローカライズされます。 たとえば、ロケールがfr_FRでデフォルトDISPLAY
ロケールがen_USの場合、getDisplayCountry()はFranceを返します。ロケールがen_USでデフォルトDISPLAY
ロケールがfr_FRの場合、getDisplayCountry()はEtats-Unisを返します。 返された名前をデフォルトのDISPLAY
ロケールにローカライズできない場合、この関数は英語の名前に戻り、ISOコードをlast-resort値として使用します。 ロケールが国を指定していない場合は、この関数は空の文字列を返します。- 戻り値:
- ロケールに適した国の名前。
-
getDisplayCountry
ユーザーへの表示に適した、ロケールの国の名前を返します。 可能な場合、返される名前はinLocaleに従ってローカライズされます。 たとえば、ロケールがfr_FRでinLocaleがen_USの場合、getDisplayCountry()は「France」を返し、ロケールがen_USでinLocaleがfr_FRの場合、getDisplayCountry()は「Etats-Unis」を返します。 返された名前をinLocaleに従ってローカライズできない場合、この関数は英語の名前に戻り、最後にISOコードに最終ソート値として戻ります。 ロケールが国を指定していない場合は、この関数は空の文字列を返します。- パラメータ:
inLocale
- 取得する表示国のロケール。- 戻り値:
- 指定されたロケールに適した国の名前。
- スロー:
NullPointerException
-inLocale
がnull
である場合
-
getDisplayVariant
-
getDisplayVariant
ユーザーへの表示に適した、ロケールのバリアント・コードの名前を返します。 可能な場合は、名前はinLocaleにローカライズされます。 ロケールがバリアント・コードを指定していない場合は、この関数は空の文字列を返します。- パラメータ:
inLocale
- 取得する表示バリアント・コードのロケール。- 戻り値:
- 指定されたロケールに適した表示バリアント・コードの名前。
- スロー:
NullPointerException
-inLocale
がnull
である場合
-
getDisplayName
public final String getDisplayName()ユーザーへの表示に適した、ロケールの名前を返します。 これは、getDisplayLanguage()、getDisplayScript()、getDisplayCountry()、getDisplayVariant()および1つの文字列に組み立てられたオプションの「Unicode拡張」によって返される値です。 空でない値が順に使用され、2番目以降の名前はカッコで囲まれます。 たとえば、言語(script, country, variant(, extension)*)
使用される形式は、ロケールに指定されているフィールドにより変化します。 前述のカッコ内のフィールド・セパレータ(カンマ文字で示されます)は、ロケールに応じてローカライズできます。 言語、スクリプト、国、およびバリアントの各フィールドがすべて空の場合、この関数は空の文字列を返します。
言語 (country(, extension)*)
言語(variant(, extension)*)
スクリプト(country(, extension)*)
国(extension) *
- 戻り値:
- 表示に適したロケールの名前。
-
getDisplayName
ユーザーへの表示に適した、ロケールの名前を返します。 これは、getDisplayLanguage()、getDisplayScript()、getDisplayCountry()、getDisplayVariant()および単一の文字列にアセンブルされたオプションの「Unicode拡張」によって返される値です。 空でない値が順に使用され、2番目以降の名前はカッコで囲まれます。 たとえば、言語(script, country, variant(, extension)*)
使用される形式は、ロケールに指定されているフィールドにより変化します。 前述のカッコ内のフィールド・セパレータ(カンマ文字で示されます)は、ロケールに応じてローカライズできます。 言語、スクリプト、国、およびバリアントの各フィールドがすべて空の場合、この関数は空の文字列を返します。
言語 (country(, extension)*)
言語(variant(, extension)*)
スクリプト(country(, extension)*)
国(extension) *
- パラメータ:
inLocale
- 取得する表示名のロケール。- 戻り値:
- 表示に適したロケールの名前。
- スロー:
NullPointerException
-inLocale
がnull
である場合
-
clone
-
hashCode
-
equals
-
filter
public static List<Locale> filter(List<Locale.LanguageRange> priorityList, Collection<Locale> locales, Locale.FilteringMode mode) RFC 4647に定義されているフィルタリング・メカニズムを使用して、一致するLocale
インスタンスのリストを返します。 指定されたlocales
に対するこのフィルタ操作により、一意のmatchinglocale(s)のみが返されます。- パラメータ:
priorityList
- ユーザーの言語優先度リスト(各言語タグが優先度または重みに基づいて降順でソートされる)locales
- マッチングに使用されるLocale
インスタンスmode
- フィルタリング・モード- 戻り値:
Locale
インスタンスのリスト(マッチする言語タグが優先度または重みに基づいて降順でソートされる)、何もマッチしない場合は空のリスト。 リストは変更可能です。- スロー:
NullPointerException
-priorityList
またはlocales
がnull
の場合IllegalArgumentException
- 1つ以上の拡張言語範囲が、指定されたリストに含まれる場合(Locale.FilteringMode.REJECT_EXTENDED_RANGES
が指定されているとき)- 導入されたバージョン:
- 1.8
-
filter
public static List<Locale> filter(List<Locale.LanguageRange> priorityList, Collection<Locale> locales) RFC 4647に定義されているフィルタリング・メカニズムを使用して、一致するLocale
インスタンスのリストを返します。 これは、mode
がLocale.FilteringMode.AUTOSELECT_FILTERING
のときのfilter(List, Collection, FilteringMode)
と同等です。 指定されたlocales
に対するこのフィルタ操作により、一意のmatchinglocale(s)のみが返されます。- パラメータ:
priorityList
- ユーザーの言語優先度リスト(各言語タグが優先度または重みに基づいて降順でソートされる)locales
- マッチングに使用されるLocale
インスタンス- 戻り値:
Locale
インスタンスのリスト(マッチする言語タグが優先度または重みに基づいて降順でソートされる)、何もマッチしない場合は空のリスト。 リストは変更可能です。- スロー:
NullPointerException
-priorityList
またはlocales
がnull
の場合- 導入されたバージョン:
- 1.8
-
filterTags
public static List<String> filterTags(List<Locale.LanguageRange> priorityList, Collection<String> tags, Locale.FilteringMode mode) RFC 4647に定義されている基本フィルタリング・メカニズムを使用して、一致する言語タグのリストを返します。 指定されたtags
に対するこのフィルタ操作により、大/小文字を保持して一意のmatchingtag(s)のみが返されます。 大文字と小文字の違いで一致するタグが重複している場合、保存された大文字と小文字を区別した最初のタグが返されます。 たとえば、"de-ch"が指定されたtags
で一致するかどうかが最初にチェックされていれば、重複一致タグ"de-ch"および"de-CH"から"de-ch"が返されます。 指定されたtags
が順序付けされていないCollection
である場合、重複したタグから返される一致するタグは、Collection
の実装に応じて変更されることに注意してください。- パラメータ:
priorityList
- ユーザーの言語優先度リスト(各言語タグが優先度または重みに基づいて降順でソートされる)tags
- 言語タグmode
- フィルタリング・モード- 戻り値:
- マッチする言語タグのリスト(優先度または重みに基づいて降順でソートされる)、何もマッチしない場合は空のリスト。 リストは変更可能です。
- スロー:
NullPointerException
-priorityList
またはtags
がnull
の場合IllegalArgumentException
- 1つ以上の拡張言語範囲が、指定されたリストに含まれる場合(Locale.FilteringMode.REJECT_EXTENDED_RANGES
が指定されているとき)- 導入されたバージョン:
- 1.8
-
filterTags
public static List<String> filterTags(List<Locale.LanguageRange> priorityList, Collection<String> tags) RFC 4647に定義されている基本フィルタリング・メカニズムを使用して、一致する言語タグのリストを返します。 これは、mode
がLocale.FilteringMode.AUTOSELECT_FILTERING
のときのfilterTags(List, Collection, FilteringMode)
と同等です。 指定されたtags
に対するこのフィルタ操作により、大/小文字を保持して一意のmatchingtag(s)のみが返されます。 大文字と小文字の違いで一致するタグが重複している場合、保存された大文字と小文字を区別した最初のタグが返されます。 たとえば、"de-ch"が指定されたtags
で一致するかどうかが最初にチェックされていれば、重複一致タグ"de-ch"および"de-CH"から"de-ch"が返されます。 指定されたtags
が順序付けされていないCollection
である場合、重複したタグから返される一致するタグは、Collection
の実装に応じて変更されることに注意してください。- パラメータ:
priorityList
- ユーザーの言語優先度リスト(各言語タグが優先度または重みに基づいて降順でソートされる)tags
- 言語タグ- 戻り値:
- マッチする言語タグのリスト(優先度または重みに基づいて降順でソートされる)、何もマッチしない場合は空のリスト。 リストは変更可能です。
- スロー:
NullPointerException
-priorityList
またはtags
がnull
の場合- 導入されたバージョン:
- 1.8
-
lookup
public static Locale lookup(List<Locale.LanguageRange> priorityList, Collection<Locale> locales) RFC 4647で定義されている検索メカニズムを使用してもっとも一致する言語タグのLocale
インスタンスを返します。- パラメータ:
priorityList
- ユーザーの言語優先度リスト(各言語タグが優先度または重みに基づいて降順でソートされる)locales
- マッチングに使用されるLocale
インスタンス- 戻り値:
- 優先度または重みに基づいて選択されたもっともマッチする
Locale
インスタンス、何もマッチしない場合はnull
。 - スロー:
NullPointerException
-priorityList
またはlocales
がnull
の場合- 導入されたバージョン:
- 1.8
-
lookupTag
public static String lookupTag(List<Locale.LanguageRange> priorityList, Collection<String> tags) RFC 4647で定義されている検索メカニズムを使用してもっとも一致する言語タグを返します。 与えられたtags
に対するこのルックアップ操作は、保存された大文字と小文字を区別した最初のタグが返されることを保証します。- パラメータ:
priorityList
- ユーザーの言語優先度リスト(各言語タグが優先度または重みに基づいて降順でソートされる)tags
- 照合に使用される言語タグ- 戻り値:
- 優先度または重みに基づいて選択されたもっともマッチする言語タグ、何もマッチしない場合は
null
。 - スロー:
NullPointerException
-priorityList
またはtags
がnull
の場合- 導入されたバージョン:
- 1.8
-