public final class Locale extends Object implements Cloneable, Serializable
Locale
オブジェクトは、地理的、政治的、または文化的に特定の地域を表します。ある操作でLocale
を必要とするタスクがある場合、その操作をロケールに依存する操作といいます。この場合、情報はLocale
によりユーザーに合わせて調整されます。たとえば、数値を表示することは、ロケールに依存する操作です。数値は、ユーザーの母国、地域、文化の習慣や慣習に従ってフォーマットする必要があります。
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
は、論理的には下記のフィールドで構成されます。
Locale
では常に小文字に正規化されます。[a-zA-Z]{2,8}
という形式です。ただし、これは拡張言語を含まないため、完全なBCP47言語プロダクションではありません。これらは最新の3文字の言語コードで置き換えられるため、必要ありません。Locale
では常にタイトル・ケース(最初の文字は大文字、残りの文字は小文字)に正規化されます。[a-zA-Z]{4}
という形式です。Locale
では常に大文字に正規化されます。[a-zA-Z]{2}|[0-9]{3}
という形式です。Locale
のバリエーションを示すために使用される任意の値。それぞれ独自のセマンティックスを示すバリアント値が2つ以上存在する場合、これらの値は重要度によって順序付けるべきで、もっとも重要なものから始めて、下線(「_」)で区切るようにします。バリアント・フィールドの大文字と小文字は区別されません。ただし、Locale
のバリアント・フィールドは従来、言語のバリエーションだけでなく任意の種類のバリエーションに使用されてきました。たとえば、Java SE Runtime Environmentで使用可能なサポートされているバリアントには、カレンダの種類や数値のスクリプトなど、別の文化的動作を示すものがあります。BCP 47では、言語を識別するものではないこのような情報は、拡張サブタグまたは私用サブタグでサポートされます。
SUBTAG (('_'|'-') SUBTAG)*
形式で、SUBTAG = [0-9][0-9a-zA-Z]{3} | [0-9a-zA-Z]{5,8}
です。(注:BCP 47は区切り文字としてハイフン(「-」)だけを使用するのに対し、この方が緩やかです。)Locale
の拡張は、BCP 47の拡張サブタグおよび私用サブタグのセマンティックスと構文を実装します。拡張の大文字と小文字は区別されませんが、Locale
ではすべての拡張キーと値が小文字に正規化されます。拡張に空の値を指定することはできません。[0-9a-zA-Z]
のうちの単一文字です。整形式の値は、SUBTAG ('-' SUBTAG)*
という形式です。ここで、キー「x」についてはSUBTAG =[0-9a-zA-Z]{1,8}
、ほかのキーについてはSUBTAG =[0-9a-zA-Z]{2,8}
です(つまり、「x」では単一文字のサブタグが許可されます)。Locale
クラスでは検証機能は提供されていません。Builder
は、個々のフィールドが構文要件を満たしている(整形式である)かどうかだけを確認し、値自体の検証は行いません。詳細は、Locale.Builder
を参照してください。
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
クラスではgetUnicodeLocaleAttributes()
、getUnicodeLocaleKeys()
、およびgetUnicodeLocaleType(java.lang.String)
も提供されているため、Unicodeロケール属性およびキーとタイプのペアに直接アクセスできます。文字列で表現された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
オブジェクトを作成する方法はいくつかあります。
Locale.Builder
を使用して、BCP 47構文に適合するLocale
オブジェクトを構築できます。
Locale
クラスには3つのコンストラクタがあります。
これらのコンストラクタでは、言語、国、およびバリアントを指定してLocale(String language)
Locale(String language, String country)
Locale(String language, String country, String variant)
Locale
オブジェクトを作成できますが、スクリプトや拡張は指定できません。
メソッドforLanguageTag(java.lang.String)
は、整形式のBCP 47言語タグに対応するLocale
オブジェクトを作成します。
Locale
クラスには、いくつかの便利な定数があるので、これらを使用して、よく使われるロケールのLocale
オブジェクトを作成できます。たとえば、次の例は、米国のLocale
オブジェクトを作成する例です。
Locale.US
国際化されていて複数のロケールのためのローカライズされたリソースを提供するアプリケーションまたはシステムは、ユーザー固有の設定を満たす1つ以上のロケール(または言語タグ)を見つける必要がある場合があります。このロケール・マッチングの説明では、言語タグとロケールが同じ意味で使用されます。
ユーザーが優先するロケールを言語タグ・セットにマッチングするために、RFC 4647 Matching of Language Tagsはフィルタリングおよびルックアップという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
によって返される最初のマッチする言語タグは、もっとも一致する言語タグとして処理されます。
Locale
を作成したあとは、このオブジェクトにそれ自身の情報を照会できます。国(または地域)コードを取得するにはgetCountry
、言語コードを取得するにはgetLanguage
を使用します。getDisplayCountry
を使用すれば、ユーザーへの表示に適した国の名前を取得できます。同じように、getDisplayLanguage
を使用すれば、ユーザーへの表示に適した言語の名前を取得できます。興味深いことに、getDisplayXXX
メソッドは、それ自身がロケール依存で、2つのバージョンを持ちます: 一方はデフォルトのDISPLAY
ロケールを使用し、他方は引数として指定されたロケールを使用します。
Javaプラットフォームには、ロケールに依存する操作を行ういくつかのクラスがあります。たとえば、NumberFormat
クラスは、数値や通貨、パーセントをロケールに依存する形でフォーマットします。NumberFormat
などのクラスには、この型のオブジェクトを作成するための簡易メソッドがいくつかあります。たとえば、NumberFormat
クラスには、デフォルトのNumberFormat
オブジェクトを作成するために次の3つの簡易メソッドがあります。
これらのメソッドにはそれぞれ2つのバリアントがあります。明示的なロケールを持つものと、持たないものです。後者はデフォルトのNumberFormat.getInstance() NumberFormat.getCurrencyInstance() NumberFormat.getPercentInstance()
FORMAT
ロケールを使用します。
NumberFormat.getInstance(myLocale) NumberFormat.getCurrencyInstance(myLocale) NumberFormat.getPercentInstance(myLocale)
Locale
は、どのオブジェクト(NumberFormat
)を取得するかを指定するためのメカニズムです。ロケールは、オブジェクトを指定するための単なるメカニズムであり、オブジェクト自体のコンテナではありません。
既存の使用方法との互換性を保つために、LocaleのコンストラクタはJava Runtime Environment version 1.7より前の動作を維持しています。toString
メソッドについても概して同じことが言えます。したがって、Localeオブジェクトは以前と同様に使用できます。特に、toStringの出力を解析して言語、国、およびバリアント・フィールドを取得しているクライアントは、引き続きそうすることができます(ただし、そのようにしないことが強く推奨されます)。ただし、スクリプトまたは拡張が存在する場合は、バリアント・フィールドに追加の情報が含まれることになります。
また、Localeのコンストラクタでは規定されていない構文制限がBCP 47では規定されています。これは、ロケールとBCP 47言語タグの間の変換で、情報が失われる場合もあることを意味します。したがって、ロケールの言語、国、またはバリアントがBCP 47に適合していない場合、そのようなロケールの状態をtoLanguageTag
で表すことはできません。
このような問題があるため、クライアントは非準拠ロケールを構築することから移行して、代わりにforLanguageTag
およびLocale.Builder
APIを使用することをお薦めします。完全なロケールを表す文字列が必要な場合、クライアントはこの目的にはいつでもtoLanguageTag
を利用できます。
互換性を維持するため、2つの非準拠ロケールが特例として扱われます。これらはja_JP_JPおよびth_TH_THです。これらは、バリアントが短すぎるため、BCP 47では整形式ではありません。BCP 47への移行を容易にするため、これらは構築時に特別に扱われます。コンストラクタはこれら2つの場合に限り例外を生成し、ほかの値ではJava 7より前とまったく同様に動作します。
Javaでは、日本で使用されている日本語とともに日本の皇暦を表すためにja_JP_JPを使用してきました。これは現在ではUnicodeロケール拡張を使用して、Unicodeロケール・キーca (カレンダ)とタイプjapaneseを指定することによって表されます。Localeコンストラクタが引数"ja", "JP", "JP"で呼び出されると、拡張「u-ca-japanese」が自動的に追加されます。
Javaでは、タイで使用されているタイ語とともにタイ数字を表すためにth_TH_THを使用してきました。これも現在ではUnicodeロケール拡張を使用して、Unicodeロケール・キーnu (数字)と値thaiを指定することによって表されます。Localeコンストラクタが引数"th", "TH", "TH"で呼び出されると、拡張「u-nu-thai」が自動的に追加されます。
直列化の際、拡張も含めすべてのフィールドがwriteObjectによって出力ストリームに書き込まれます。
直列化復元の際、th_TH_THおよびja_JP_JPの2つの場合のみ、「特例」で説明されている拡張がreadResolveによって追加されます。
Localeのコンストラクタは常に、3つの言語コードを廃止された以前の形式に変換してきました。heはiwにマップされ、yiはjiにマップされ、idはinにマップされます。下位互換性を保つために、これは引き続き行われます。
1.7で追加されたAPIは、古い言語コードと新しい言語コードをマップして、Localeの内部では古いコードを維持し(そのためgetLanguage
とtoString
には古いコードが反映される)、BCP 47言語タグAPIでは新しいコードを使用します(そのためtoLanguageTag
には新しいコードが反映される)。これにより、ロケールの構築に使用されるコードやAPIにかかわらず、ロケール間の等価関係が維持されます。Javaのデフォルト・リソース・バンドルのルックアップ・メカニズムはこのマッピングも実装するため、どちらかの命名規則でもリソースの名前を指定できます。ResourceBundle.Control
を参照してください。
Localeのコンストラクタでは、言語および国のパラメータの長さは2文字であると指定されてきましたが、実際には任意の長さが受け入れられていました。この仕様が緩和され、2文字から8文字までの言語コードと、2文字から3文字までの国(地域)コードが許可されるようになりました。特に、IANA言語サブタグ・レジストリに指定されている3文字の言語コードと3桁の地域コードが許可されます。互換性のため、実装では引き続き長さの制約は課されません。
Locale.Builder
, ResourceBundle
, Format
, NumberFormat
, Collator
, 直列化された形式修飾子と型 | クラスと説明 |
---|---|
static class |
Locale.Builder
Builder は、setterによって構成される値からLocale のインスタンスを構築するために使用されます。 |
static class |
Locale.Category
ロケール・カテゴリの列挙型です。
|
static class |
Locale.FilteringMode
この列挙型は、ロケール・マッチング用のフィルタリング・モードを選択するための定数を提供します。
|
static class |
Locale.LanguageRange
このクラスは、RFC 4647の言語タグの照合に定義されている言語範囲を表します。
|
修飾子と型 | フィールドと説明 |
---|---|
static Locale |
CANADA
国に使用する定数です。
|
static Locale |
CANADA_FRENCH
国に使用する定数です。
|
static Locale |
CHINA
国に使用する定数です。
|
static Locale |
CHINESE
言語に使用する定数です。
|
static Locale |
ENGLISH
言語に使用する定数です。
|
static Locale |
FRANCE
国に使用する定数です。
|
static Locale |
FRENCH
言語に使用する定数です。
|
static Locale |
GERMAN
言語に使用する定数です。
|
static Locale |
GERMANY
国に使用する定数です。
|
static Locale |
ITALIAN
言語に使用する定数です。
|
static Locale |
ITALY
国に使用する定数です。
|
static Locale |
JAPAN
国に使用する定数です。
|
static Locale |
JAPANESE
言語に使用する定数です。
|
static Locale |
KOREA
国に使用する定数です。
|
static Locale |
KOREAN
言語に使用する定数です。
|
static Locale |
PRC
国に使用する定数です。
|
static char |
PRIVATE_USE_EXTENSION
私用拡張用のキー(「x」)です。
|
static Locale |
ROOT
ルート・ロケールに使用される定数です。
|
static Locale |
SIMPLIFIED_CHINESE
言語に使用する定数です。
|
static Locale |
TAIWAN
国に使用する定数です。
|
static Locale |
TRADITIONAL_CHINESE
言語に使用する定数です。
|
static Locale |
UK
国に使用する定数です。
|
static char |
UNICODE_LOCALE_EXTENSION
Unicodeロケール拡張用のキーです(「u」)。
|
static Locale |
US
国に使用する定数です。
|
コンストラクタと説明 |
---|
Locale(String language)
言語コードからロケールを構築します。
|
Locale(String language, String country)
言語および国からロケールを構築します。
|
Locale(String language, String country, String variant)
言語、国、およびバリアントからロケールを構築します。
|
修飾子と型 | メソッドと説明 |
---|---|
Object |
clone()
Cloneableをオーバーライドします。
|
boolean |
equals(Object obj)
このLocaleがもう一方のオブジェクトと等しい場合にtrueを返します。
|
static List<Locale> |
filter(List<Locale.LanguageRange> priorityList, Collection<Locale> locales)
RFC 4647に定義されているフィルタリング・メカニズムを使用して、一致する
Locale インスタンスのリストを返します。 |
static List<Locale> |
filter(List<Locale.LanguageRange> priorityList, Collection<Locale> locales, Locale.FilteringMode mode)
RFC 4647に定義されているフィルタリング・メカニズムを使用して、一致する
Locale インスタンスのリストを返します。 |
static List<String> |
filterTags(List<Locale.LanguageRange> priorityList, Collection<String> tags)
RFC 4647に定義されている基本フィルタリング・メカニズムを使用して、一致する言語タグのリストを返します。
|
static List<String> |
filterTags(List<Locale.LanguageRange> priorityList, Collection<String> tags, Locale.FilteringMode mode)
RFC 4647に定義されている基本フィルタリング・メカニズムを使用して、一致する言語タグのリストを返します。
|
static Locale |
forLanguageTag(String languageTag)
指定されたIETF BCP 47言語タグ文字列を表すロケールを返します。
|
static Locale[] |
getAvailableLocales()
インストールされているすべてのロケールの配列を返します。
|
String |
getCountry()
このロケールの国/地域コードを返します。これは、空の文字列、2文字の大文字のISO 3166コード、または3桁のUN M.49コードのいずれかになります。
|
static Locale |
getDefault()
Java仮想マシンのこのインスタンスについて、デフォルト・ロケールの現在の値を取得します。
|
static Locale |
getDefault(Locale.Category category)
Java仮想マシンのこのインスタンスについて、指定されたカテゴリのデフォルト・ロケールの現在の値を取得します。
|
String |
getDisplayCountry()
ユーザーへの表示に適した、ロケールの国の名前を返します。
|
String |
getDisplayCountry(Locale inLocale)
ユーザーへの表示に適した、ロケールの国の名前を返します。
|
String |
getDisplayLanguage()
ユーザーへの表示に適した、ロケールの言語の名前を返します。
|
String |
getDisplayLanguage(Locale inLocale)
ユーザーへの表示に適した、ロケールの言語の名前を返します。
|
String |
getDisplayName()
ユーザーへの表示に適した、ロケールの名前を返します。
|
String |
getDisplayName(Locale inLocale)
ユーザーへの表示に適した、ロケールの名前を返します。
|
String |
getDisplayScript()
ユーザーへの表示に適した、ロケールのスクリプトの名前を返します。
|
String |
getDisplayScript(Locale inLocale)
ユーザーへの表示に適した、ロケールのスクリプトの名前を返します。
|
String |
getDisplayVariant()
ユーザーへの表示に適した、ロケールのバリアント・コードの名前を返します。
|
String |
getDisplayVariant(Locale inLocale)
ユーザーへの表示に適した、ロケールのバリアント・コードの名前を返します。
|
String |
getExtension(char key)
指定されたキーに関連付けられた拡張(つまり私用)値を返します。キーに関連付けられた拡張がない場合はnullを返します。
|
Set<Character> |
getExtensionKeys()
このロケールに関連付けられた拡張キーのセットを返します。拡張がない場合は空のセットを返します。
|
String |
getISO3Country()
ロケールの国の3文字の省略形を返します。
|
String |
getISO3Language()
このロケールの言語の3文字の省略形を返します。
|
static String[] |
getISOCountries()
ISO 3166で定義されている2桁の国コードのリストを返します。
|
static String[] |
getISOLanguages()
ISO 639で定義されている2桁の言語コードのリストを返します。
|
String |
getLanguage()
このLocaleの言語コードを返します。
|
String |
getScript()
このロケールのスクリプトを返します。これは、空の文字列または4文字のISO 15924スクリプト・コードのどちらかになります。
|
Set<String> |
getUnicodeLocaleAttributes()
このロケールに関連付けられたUnicodeロケール属性のセットを返します。属性がない場合は空のセットを返します。
|
Set<String> |
getUnicodeLocaleKeys()
このロケールで定義されたUnicodeロケール・キーのセットを返します。このロケールにない場合は空のセットを返します。
|
String |
getUnicodeLocaleType(String key)
このロケールの指定されたUnicodeロケール・キーに関連付けられたUnicodeロケール・タイプを返します。
|
String |
getVariant()
このロケールのバリアント・コードを返します。
|
boolean |
hasExtensions()
|
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 void |
setDefault(Locale.Category category, Locale newLocale)
Java仮想マシンのこのインスタンスについて、指定されたカテゴリ用のデフォルト・ロケールを設定します。
|
static void |
setDefault(Locale newLocale)
Java仮想マシンのこのインスタンスのデフォルト・ロケールを設定します。
|
Locale |
stripExtensions()
この
Locale のコピーを、拡張を除いて返します。 |
String |
toLanguageTag()
このロケールを表す、整形式のIETF BCP 47言語タグを返します。
|
String |
toString()
language + "_" + country + "_" + (variant + "_#" | "#") + script + "-" + extensionsのように、言語、国、バリアント、スクリプト、および拡張から成る
Locale オブジェクトの文字列表現を返します。言語は常に小文字、国は常に大文字、スクリプトは常にタイトル・ケース、拡張は常に小文字になります。 |
public static final Locale ENGLISH
public static final Locale FRENCH
public static final Locale GERMAN
public static final Locale ITALIAN
public static final Locale JAPANESE
public static final Locale KOREAN
public static final Locale CHINESE
public static final Locale SIMPLIFIED_CHINESE
public static final Locale TRADITIONAL_CHINESE
public static final Locale FRANCE
public static final Locale GERMANY
public static final Locale ITALY
public static final Locale JAPAN
public static final Locale KOREA
public static final Locale CHINA
public static final Locale PRC
public static final Locale TAIWAN
public static final Locale UK
public static final Locale US
public static final Locale CANADA
public static final Locale CANADA_FRENCH
public static final Locale ROOT
public static final char PRIVATE_USE_EXTENSION
getExtension(char)
, Locale.Builder.setExtension(char, String)
, 定数フィールド値public static final char UNICODE_LOCALE_EXTENSION
getExtension(char)
, Locale.Builder.setExtension(char, String)
, 定数フィールド値public Locale(String language, String country, String variant)
注:
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の場合にスローされる。public Locale(String language, String country)
注:
language
- ISO 639 alpha-2またはalpha-3言語コード、または最高8文字の言語のサブタグ。言語の有効な値については、Locale
クラスの説明を参照。country
- ISO 3166 alpha-2の国コードまたはUN M.49 numeric-3の地域コード。国の有効な値については、Locale
クラスの説明を参照。NullPointerException
- どちらかの引数がnullの場合にスローされる。public Locale(String language)
注:
language
- ISO 639 alpha-2またはalpha-3言語コード、または最高8文字の言語のサブタグ。言語の有効な値については、Locale
クラスの説明を参照。NullPointerException
- 引数がnullの場合にスローされる。public static Locale getDefault()
Java仮想マシンでは、ホスト環境に基づいて起動時にデフォルト・ロケールが設定されます。ロケールが明示的に指定されていない場合、ロケールに依存するメソッドの多くでデフォルト・ロケールが使用されます。setDefault
メソッドを使用して変更できます。
public static Locale getDefault(Locale.Category category)
Java仮想マシンでは、ホスト環境に基づいて起動時にデフォルト・ロケールが設定されます。ロケールが明示的に指定されていない場合、ロケールに依存するメソッドの多くでデフォルト・ロケールが使用されます。setDefault(Locale.Category, Locale)メソッドを使用して変更できます。
category
- - デフォルト・ロケールを取得する、指定されたカテゴリNullPointerException
- - categoryがnullの場合setDefault(Locale.Category, Locale)
public static void setDefault(Locale newLocale)
セキュリティ・マネージャが存在する場合は、デフォルト・ロケールが変更される前に、セキュリティ・マネージャのcheckPermission
メソッドがPropertyPermission("user.language", "write")
アクセス権で呼び出されます。
Java仮想マシンでは、ホスト環境に基づいて起動時にデフォルト・ロケールが設定されます。ロケールが明示的に指定されていない場合、ロケールに依存するメソッドの多くでデフォルト・ロケールが使用されます。
デフォルト・ロケールの変更はさまざまな機能の領域に影響する可能性があるため、このメソッドは、同じJava仮想マシンで実行されるロケール依存コードを呼出し側が再初期化できる場合にだけ使用するようにしてください。
このメソッドでデフォルト・ロケールを設定すると、各カテゴリのすべてのデフォルト・ロケールも指定のデフォルト・ロケールに設定されます。
newLocale
- 新しいデフォルトのロケールSecurityException
- セキュリティ・マネージャが存在し、そのcheckPermission
メソッドでこの操作が許可されていない場合。NullPointerException
- newLocale
がnullである場合SecurityManager.checkPermission(java.security.Permission)
, PropertyPermission
public static void setDefault(Locale.Category category, Locale newLocale)
セキュリティ・マネージャが存在する場合、デフォルト・ロケールが変更される前に、セキュリティ・マネージャのcheckPermissionメソッドがアクセス権PropertyPermission("user.language", "write")で呼び出されます。
Java仮想マシンでは、ホスト環境に基づいて起動時にデフォルト・ロケールが設定されます。ロケールが明示的に指定されていない場合、ロケールに依存するメソッドの多くでデフォルト・ロケールが使用されます。
デフォルト・ロケールの変更はさまざまな機能の領域に影響する可能性があるため、このメソッドは、同じJava仮想マシンで実行されるロケール依存コードを呼出し側が再初期化できる場合にだけ使用するようにしてください。
category
- - デフォルト・ロケールを設定する、指定されたカテゴリnewLocale
- - 新しいデフォルトのロケールSecurityException
- - セキュリティ・マネージャが存在し、そのcheckPermissionメソッドでこの操作が許可されていない場合。NullPointerException
- - categoryまたはnewLocaleがnullの場合SecurityManager.checkPermission(java.security.Permission)
, PropertyPermission
, getDefault(Locale.Category)
public static Locale[] getAvailableLocales()
LocaleServiceProvider
実装によってサポートされているロケールの和集合を表します。これには、Locale.US
と等価なLocale
インスタンスが少なくとも1つ含まれている必要があります。public static String[] getISOCountries()
注: Locale
クラスは、3桁の数字のUN M.49地域コードなど、国(地域)用のほかのコードもサポートしています。したがって、このメソッドで返されるリストには、Localeの作成に使用できる有効なコードがすべて含まれているわけではありません。
public static String[] getISOLanguages()
注:
Locale
クラスは、8文字までの長さの言語コードもサポートしています。したがって、このメソッドで返されるリストには、Localeの作成に使用できる有効なコードがすべて含まれているわけではありません。
public String getLanguage()
注: ISO 639は安定した規格ではありません。一部の言語のコードは変更されています。Localeのコンストラクタは、コードが変更された言語の新しいコードと従来のコードの両方を認識しますが、この関数は常に古い方のコードを返します。コードが変更された言語かどうかを調べる場合は、次のようにしないでください
if (locale.getLanguage().equals("he")) // BAD! ...代わりに、次のようにしてください
if (locale.getLanguage().equals(new Locale("he").getLanguage())) ...
getDisplayLanguage()
public String getScript()
getDisplayScript()
public String getCountry()
getDisplayCountry()
public String getVariant()
getDisplayVariant()
public boolean hasExtensions()
Locale
が拡張を持つ場合はtrue
public Locale stripExtensions()
Locale
のコピー(拡張なし)、これ
が拡張を持たない場合はthis
public String getExtension(char key)
[0-9A-Za-z]
の1つである必要があります。キーの大文字と小文字は区別されないため、たとえば「z」と「Z」は同じ拡張を表します。key
- 拡張キーIllegalArgumentException
- キーが整形式でない場合PRIVATE_USE_EXTENSION
, UNICODE_LOCALE_EXTENSION
public Set<Character> getExtensionKeys()
public Set<String> getUnicodeLocaleAttributes()
public String getUnicodeLocaleType(String key)
key
- Unicodeロケール・キーIllegalArgumentException
- キーが整形式でない場合NullPointerException
- key
がnullである場合public Set<String> getUnicodeLocaleKeys()
public final String toString()
Locale
オブジェクトの文字列表現(次のように言語、国、バリアント、スクリプト、および拡張から成る)を返します。
language + "_" + country + "_" + (variant + "_#" | "#") + script + "-" + extensions言語は常に小文字、国は常に大文字、スクリプトは常にタイトル・ケース、拡張は常に小文字になります。拡張サブタグおよび私用サブタグは、
toLanguageTag()
で説明されている正規の順序になります。
ロケールにスクリプトも拡張も含まれていない場合、結果はJava 6以前と同じです。
言語フィールドと国フィールドの両方が欠落している場合は、バリアント、スクリプト、または拡張フィールドが含まれていても、この関数は空の文字列を返します。バリアントだけを持つロケールは作成できません。バリアントは整形式の言語コードまたは国コードとともに使用する必要があります。
スクリプトまたは拡張が含まれている場合で、バリアントが欠落しているときは、「#」の前に下線は付加されません。
この動作は、デバッグをサポートするためと、言語、国、およびバリアント・フィールドだけが想定されていた以前のtoString
の使用方法との互換性を保つために設計されています。相互交換のためにLocaleをStringで表現するには、toLanguageTag()
を使用してください。
例
toString
、クラス: Object
getDisplayName()
, toLanguageTag()
public String toLanguageTag()
この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言語コードを含め、いくつかの古いロケール表現が互換性のためにサポートされています。このメソッドは、次の変換を実行します。
注: このメソッドで作成される言語タグは整形式(IETF BCP 47仕様で定義されている構文要件を満たす)ですが、必ずしも有効なBCP 47言語タグではありません。次に例を示します。
new Locale("xx", "YY").toLanguageTag();これは「xx-YY」を返しますが、言語サブタグ「xx」と地域サブタグ「YY」はIANA言語サブタグ・レジストリに登録されていないため、無効です。
forLanguageTag(String)
public static Locale forLanguageTag(String languageTag)
指定された言語タグに整形式でないサブタグが含まれている場合、整形式でない最初のサブタグおよびそれに続くすべてのサブタグが無視されます。このような場合に例外をスローするLocale.Builder.setLanguageTag(java.lang.String)
と比較してください。
次の変換が実行されます。
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"
Locale.forLanguageTag("ar-aao").getLanguage(); // returns "aao" Locale.forLanguageTag("en-abc-def-us").toString(); // returns "abc_US"
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"
これはBCP47の「言語タグ」プロダクションを実装しているため、適用外の言語タグ(標準および不規則)と私用言語タグをサポートします。スタンドアロンの私用タグは、空の言語と拡張「x-任意」で表され、適用外のタグは、正規の代替タグがあればそれに変換されます。
正規代替を持つ適用外タグは次のとおりです。
適用外のタグ | 最新の代替 | |
---|---|---|
art-lojban | jbo | |
i-ami | ami | |
i-bnn | bnn | |
i-hak | hak | |
i-klingon | tlh | |
i-lux | lb | |
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 Language Subtag Registryを参照してください(「Type: grandfathered」を検索)。
注:toLanguageTag
とforLanguageTag
で元に戻る保証はありません。
languageTag
- 言語タグNullPointerException
- languageTag
がnull
の場合toLanguageTag()
、Locale.Builder.setLanguageTag(String)
public String getISO3Language() throws MissingResourceException
MissingResourceException
- このロケールに3文字の言語省略形がない場合、MissingResourceExceptionがスローされる。public String getISO3Country() throws MissingResourceException
ISO 3166-1コードはオンラインで参照できます。
MissingResourceException
- このロケールに3文字の国省略形がない場合、MissingResourceExceptionがスローされる。public final String getDisplayLanguage()
DISPLAY
ロケール用にローカライズされます。たとえば、ロケールがfr_FRでデフォルトDISPLAY
ロケールがen_USの場合、getDisplayLanguage()はFrenchを返します。ロケールがen_USでデフォルトDISPLAY
ロケールがfr_FRの場合、getDisplayLanguage()はanglaisを返します。返される名前がデフォルトDISPLAY
ロケール用にローカライズできない場合(たとえば、クロアチア語用の日本語名がない場合)、この関数は英語名に頼り、最後の手段の値としてISOコードを使用します。ロケールが言語を指定していない場合は、この関数は空の文字列を返します。public String getDisplayLanguage(Locale inLocale)
inLocale
- 取得する表示言語のロケール。NullPointerException
- inLocale
がnull
である場合public String getDisplayScript()
DISPLAY
ロケール用にローカライズされます。このロケールがスクリプト・コードを指定していない場合は、空の文字列を返します。DISPLAY
ロケール用のスクリプト・コードの表示名public String getDisplayScript(Locale inLocale)
inLocale
- 取得する表示スクリプトのロケール。DISPLAY
ロケール用のスクリプト・コードの表示名NullPointerException
- inLocale
がnull
である場合public final String getDisplayCountry()
DISPLAY
ロケール用にローカライズされます。たとえば、ロケールがfr_FRでデフォルトDISPLAY
ロケールがen_USの場合、getDisplayCountry()はFranceを返します。ロケールがen_USでデフォルトDISPLAY
ロケールがfr_FRの場合、getDisplayCountry()はEtats-Unisを返します。返される名前がデフォルトDISPLAY
ロケール用にローカライズできない場合(たとえば、クロアチア語用の日本語名がない場合)、この関数は英語名に頼り、最後の手段の値としてISOコードを使用します。ロケールが国を指定していない場合は、この関数は空の文字列を返します。public String getDisplayCountry(Locale inLocale)
inLocale
- 取得する表示国のロケール。NullPointerException
- inLocale
がnull
である場合public final String getDisplayVariant()
DISPLAY
ロケール用にローカライズされます。ロケールがバリアント・コードを指定していない場合は、この関数は空の文字列を返します。public String getDisplayVariant(Locale inLocale)
inLocale
- 取得する表示バリアント・コードのロケール。NullPointerException
- inLocale
がnull
である場合public final String getDisplayName()
language (script, country, variant)使用される形式は、ロケールに指定されているフィールドにより変化します。言語、スクリプト、国、およびバリアントの各フィールドがすべて空の場合、この関数は空の文字列を返します。
language (country)
language (variant)
script (country)
country
public String getDisplayName(Locale inLocale)
language (script, country, variant)使用される形式は、ロケールに指定されているフィールドにより変化します。言語、スクリプト、国、およびバリアントの各フィールドがすべて空の場合、この関数は空の文字列を返します。
language (country)
language (variant)
script (country)
country
inLocale
- 取得する表示名のロケール。NullPointerException
- inLocale
がnull
である場合public Object clone()
public int hashCode()
hashCode
、クラス: Object
Object.equals(java.lang.Object)
, System.identityHashCode(java.lang.Object)
public boolean equals(Object obj)
equals
、クラス: Object
obj
- 比較対象の参照オブジェクト。Object.hashCode()
、HashMap
public static List<Locale> filter(List<Locale.LanguageRange> priorityList, Collection<Locale> locales, Locale.FilteringMode mode)
Locale
インスタンスのリストを返します。priorityList
- ユーザーの言語優先度リスト(各言語タグが優先度または重みに基づいて降順でソートされる)locales
- マッチングに使用されるLocale
インスタンスmode
- フィルタリング・モードLocale
インスタンスのリスト(マッチする言語タグが優先度または重みに基づいて降順でソートされる)、何もマッチしない場合は空のリスト。リストは変更可能です。NullPointerException
- priorityList
またはlocales
がnull
の場合IllegalArgumentException
- 1つ以上の拡張言語範囲が、指定されたリストに含まれる場合(Locale.FilteringMode.REJECT_EXTENDED_RANGES
が指定されているとき)public static List<Locale> filter(List<Locale.LanguageRange> priorityList, Collection<Locale> locales)
Locale
インスタンスのリストを返します。これは、mode
がLocale.FilteringMode.AUTOSELECT_FILTERING
のときのfilter(List, Collection, FilteringMode)
と同等です。priorityList
- ユーザーの言語優先度リスト(各言語タグが優先度または重みに基づいて降順でソートされる)locales
- マッチングに使用されるLocale
インスタンスLocale
インスタンスのリスト(マッチする言語タグが優先度または重みに基づいて降順でソートされる)、何もマッチしない場合は空のリスト。リストは変更可能です。NullPointerException
- priorityList
またはlocales
がnull
の場合public static List<String> filterTags(List<Locale.LanguageRange> priorityList, Collection<String> tags, Locale.FilteringMode mode)
priorityList
- ユーザーの言語優先度リスト(各言語タグが優先度または重みに基づいて降順でソートされる)tags
- 言語タグmode
- フィルタリング・モードNullPointerException
- priorityList
またはtags
がnull
の場合IllegalArgumentException
- 1つ以上の拡張言語範囲が、指定されたリストに含まれる場合(Locale.FilteringMode.REJECT_EXTENDED_RANGES
が指定されているとき)public static List<String> filterTags(List<Locale.LanguageRange> priorityList, Collection<String> tags)
mode
がLocale.FilteringMode.AUTOSELECT_FILTERING
のときのfilterTags(List, Collection, FilteringMode)
と同等です。priorityList
- ユーザーの言語優先度リスト(各言語タグが優先度または重みに基づいて降順でソートされる)tags
- 言語タグNullPointerException
- priorityList
またはtags
がnull
の場合public static Locale lookup(List<Locale.LanguageRange> priorityList, Collection<Locale> locales)
Locale
インスタンスを返します。priorityList
- ユーザーの言語優先度リスト(各言語タグが優先度または重みに基づいて降順でソートされる)locales
- マッチングに使用されるLocale
インスタンスLocale
インスタンス、何もマッチしない場合はnull
。NullPointerException
- priorityList
またはtags
がnull
の場合public static String lookupTag(List<Locale.LanguageRange> priorityList, Collection<String> tags)
priorityList
- ユーザーの言語優先度リスト(各言語タグが優先度または重みに基づいて降順でソートされる)tags
- マッチングに使用される言語タグnull
。NullPointerException
- priorityList
またはtags
がnull
の場合 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2020, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。