public final class Locale extends Object implements Cloneable, Serializable
Locale
オブジェクトは、地理的、政治的、または文化的に特定の地域を表します。ある操作で Locale
を必要とするタスクがある場合、その操作をロケールに依存する操作といいます。この場合、情報は Locale
によりユーザーに合わせて調整されます。たとえば、数値を表示するのは、ロケールに依存する操作です。この数値は、ユーザーの国や地域、文化の習慣や規則に従ってフォーマットする必要があります。
Locale
クラスは、BCP 47 (IETF BCP 47「Tags for Identifying Languages」) と相互に交換できる識別子を実装し、ロケールデータ交換用の 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
Locale
を作成したあとは、このオブジェクトにそれ自身の情報を照会できます。国 (または地域) コードを取得するには getCountry
、言語コードを取得するには getLanguage
を使用します。getDisplayCountry
を使用すれば、ユーザーへの表示に適した国の名前を取得できます。同じように、getDisplayLanguage
を使用すれば、ユーザーへの表示に適した言語の名前を取得できます。興味深いことに、getDisplayXXX
メソッド自体もロケールに依存します。これには 2 つのバージョンがあり、一方はデフォルトのロケールを使用し、他方は引数として指定されたロケールを使用します。
Java プラットフォームには、ロケールに依存する操作を行ういくつかのクラスがあります。たとえば、NumberFormat
クラスは、数値や通貨、パーセントをロケールに依存する形でフォーマットします。NumberFormat
などのクラスには、この型のオブジェクトを作成するための簡易メソッドがいくつかあります。たとえば、NumberFormat
クラスには、デフォルトの NumberFormat
オブジェクトを作成するために次の 3 つの簡易メソッドがあります。
これらのメソッドにはそれぞれ 2 つのバリアントがあります。明示的なロケールを持つものと、持たないものです。後者の場合はデフォルトロケールが使用されます。NumberFormat.getInstance() NumberFormat.getCurrencyInstance() NumberFormat.getPercentInstance()
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 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 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()
このロケールのバリアントコードを返します。
|
int |
hashCode()
hashCode をオーバーライドします。
|
static void |
setDefault(Locale.Category category, Locale newLocale)
Java 仮想マシンのこのインスタンスについて、指定されたカテゴリ用のデフォルトロケールを設定します。
|
static void |
setDefault(Locale newLocale)
Java 仮想マシンのこのインスタンスのデフォルトロケールを設定します。
|
String |
toLanguageTag()
このロケールを表す、整形式の IETF BCP 47 言語タグを返します。
|
String |
toString()
この
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 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 言語サブタグレジストリを参照してください (「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()
public String getDisplayLanguage(Locale inLocale)
NullPointerException
- inLocale
が null
である場合public String getDisplayScript()
public String getDisplayScript(Locale inLocale)
NullPointerException
- inLocale
が null
である場合public final String getDisplayCountry()
public String getDisplayCountry(Locale inLocale)
NullPointerException
- inLocale
が null
である場合public final String getDisplayVariant()
public String getDisplayVariant(Locale 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
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
バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.