モジュール java.base
パッケージ java.util

クラスLocale.LanguageRange

java.lang.Object
java.util.Locale.LanguageRange
含まれているクラス:
Locale

public static final class Locale.LanguageRange
extends Object
このクラスはRFC 4647言語タグの照合に定義されている言語範囲を表します。 言語範囲は、「ロケール・マッチング」で説明されているメカニズムを使用することで特定の要件を満たす言語タグを選択するために使用される、識別子です。 ユーザーの設定を表し、言語範囲で構成されるリストは、言語優先度リストと呼ばれます。

基本と拡張という2つのタイプの言語範囲があります。 RFC 4647では、言語範囲の構文は次のようにABNFで表現されます。

     basic-language-range    = (1*8ALPHA *("-" 1*8alphanum)) / "*"
     extended-language-range = (1*8ALPHA / "*")
                               *("-" (1*8alphanum / "*"))
     alphanum                = ALPHA / DIGIT
 
たとえば、"en" (英語)、"ja-JP" (日本語、日本)、"*" (任意の言語タグにマッチする特殊な言語範囲)は基本言語範囲、"*-CH" (任意の言語、スイス)、"es-*" (スペイン語、任意の地域)および"zh-Hant-*" (繁体字中国語、任意の地域)は拡張言語範囲です。

導入されたバージョン:
1.8
関連項目:
Locale.filter(java.util.List<java.util.Locale.LanguageRange>, java.util.Collection<java.util.Locale>, java.util.Locale.FilteringMode), Locale.filterTags(java.util.List<java.util.Locale.LanguageRange>, java.util.Collection<java.lang.String>, java.util.Locale.FilteringMode), Locale.lookup(java.util.List<java.util.Locale.LanguageRange>, java.util.Collection<java.util.Locale>), Locale.lookupTag(java.util.List<java.util.Locale.LanguageRange>, java.util.Collection<java.lang.String>)
  • フィールドのサマリー

    フィールド
    修飾子と型 フィールド 説明
    static double MAX_WEIGHT
    重みの最大値、1.0を保持する定数、言語範囲がユーザーに最適であることを示します。
    static double MIN_WEIGHT
    重みの最小値、0.0を保持する定数、言語範囲がユーザーに適さないことを示します。
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ 説明
    LanguageRange​(String range)
    指定されたrangeを使用してLanguageRangeを構築します。
    LanguageRange​(String range, double weight)
    指定されたrangeweightを使用してLanguageRangeを構築します。
  • メソッドのサマリー

    修飾子と型 メソッド 説明
    boolean equals​(Object obj)
    このオブジェクトを指定されたオブジェクトと比較します。
    String getRange()
    このLanguageRangeの言語範囲を返します。
    double getWeight()
    このLanguageRangeの重みを返します。
    int hashCode()
    オブジェクトのハッシュ・コード値を返します。
    static List<Locale.LanguageRange> mapEquivalents​(List<Locale.LanguageRange> priorityList, Map<String,​List<String>> map)
    指定されたpriorityListmapを使って新しいカスタマイズされた言語優先度リストを生成します。
    static List<Locale.LanguageRange> parse​(String ranges)
    指定されたrangesを解析して、言語優先度リストを生成します。
    static List<Locale.LanguageRange> parse​(String ranges, Map<String,​List<String>> map)
    指定されたrangesを解析して言語優先度リストを生成してから、指定されたmapを使用してリストをカスタマイズします。
    String toString()
    このLanguageRangeオブジェクトの有益な文字列表現を返します。範囲が重み付けされ、その重みが最大の重みよりも小さい場合、言語の範囲と重みからなります。

    クラス java.lang.Objectで宣言されたメソッド

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • フィールド詳細

    • MAX_WEIGHT

      public static final double MAX_WEIGHT
      重みの最大値、1.0を保持する定数、言語範囲がユーザーに最適であることを示します。
      関連項目:
      定数フィールド値
    • MIN_WEIGHT

      public static final double MIN_WEIGHT
      重みの最小値、0.0を保持する定数、言語範囲がユーザーに適さないことを示します。
      関連項目:
      定数フィールド値
  • コンストラクタの詳細

    • LanguageRange

      public LanguageRange​(String range)
      指定されたrangeを使用してLanguageRangeを構築します。 構築時にはIANA Language Subtag Registryに対する検証は行われません。

      これはLanguageRange(range, MAX_WEIGHT)と同等です。

      パラメータ:
      range - 言語範囲
      例外:
      NullPointerException - 指定されたrangenullの場合
      IllegalArgumentException - 指定されたrangeがRFC 4647で言及されている言語範囲の構文に準拠していない場合
    • LanguageRange

      public LanguageRange​(String range, double weight)
      指定されたrangeweightを使用してLanguageRangeを構築します。 構築時にはIANA Language Subtag Registryに対する検証は行われません。
      パラメータ:
      range - 言語範囲
      weight - MIN_WEIGHTからMAX_WEIGHTの重み値
      例外:
      NullPointerException - 指定されたrangenullの場合
      IllegalArgumentException - 与えられたrangeがRFC 4647で言及された言語範囲の構文に従わない場合、または指定されたweightMIN_WEIGHTより小さいかMAX_WEIGHTより大きい場合
  • メソッドの詳細

    • getRange

      public String getRange()
      このLanguageRangeの言語範囲を返します。
      戻り値:
      言語範囲。
    • getWeight

      public double getWeight()
      このLanguageRangeの重みを返します。
      戻り値:
      重み値。
    • parse

      public static List<Locale.LanguageRange> parse​(String ranges)
      指定されたrangesを解析して、言語優先度リストを生成します。

      このメソッドは、言語範囲ごとに指定されたrangesで構文チェックを実行しますが、IANA Language Subtag Registryを使用した検証は行いません。

      指定されるrangesは次のいずれかの形式を取ることができます。

         "Accept-Language: ja,en;q=0.4"  (weighted list with Accept-Language prefix)
         "ja,en;q=0.4"                   (weighted list)
         "ja,en"                         (prioritized list)
       
      重み付けされたリストでは、各言語範囲に重み値が与えられます。 重み値はRFC 2616の品質値と同一で、ユーザーがどの程度言語を優先するかを表します。 重み値は対応する言語範囲と";q="の後に指定され、デフォルトの重み値はMAX_WEIGHT(省略時)になります。

      重み付けされたリストとは異なり、優先順位付きリストの言語範囲は優先度に基づいて降順でソートされます。 最初の言語範囲は最高の優先度を持ち、ユーザーの設定をもっとも満たします。

      いずれの場合も、言語範囲は言語優先度リスト内で優先度または重みに基づいて降順でソートされます。 指定されたrangesに1つの言語範囲が複数回出現する場合、最初の言語範囲のみが言語優先度リストに取り込まれます。

      返されるリストは、指定されたrangesからの言語範囲とIANA Language Subtag Registryで見つかる同等のものから構成されます。 たとえば、指定されたranges"Accept-Language: iw,en-us;q=0.7,en;q=0.3"の場合、返されるリスト内の要素は次のようになります。

        Range                                   Weight
          "iw" (older tag for Hebrew)             1.0
          "he" (new preferred code for Hebrew)    1.0
          "en-us" (English, United States)        0.7
          "en" (English)                          0.3
       
      2つの言語範囲、"iw""he"が、リスト内で同じ最高優先度を持っています。 アプリケーションまたはシステムが"he"のみをサポートされるロケール(言語タグ)として提供する場合でも、"he"をユーザーの言語優先度リストに追加することで、ロケール・マッチング・メソッドはヘブライ語をマッチするロケール(言語タグ)として見つけることができます。

      パラメータ:
      ranges - カンマ区切りの言語範囲のリスト、つまりRFC 2616で定義されているAccept-Languageヘッダー形式の言語範囲のリスト
      戻り値:
      指定されたrangesおよびそれらの同等言語範囲(ある場合)に含まれる言語範囲から構成される言語優先度リスト リストは変更可能です。
      例外:
      NullPointerException - rangesがnullの場合。
      IllegalArgumentException - 指定されたrangesに見つかる言語範囲または重みが整形式でない場合
    • parse

      public static List<Locale.LanguageRange> parse​(String ranges, Map<String,​List<String>> map)
      指定されたrangesを解析して言語優先度リストを生成してから、指定されたmapを使用してリストをカスタマイズします。 このメソッドはmapEquivalents(parse(ranges), map)と同等です。
      パラメータ:
      ranges - カンマ区切りの言語範囲のリスト、つまりRFC 2616で定義されているAccept-Languageヘッダー形式の言語範囲のリスト
      map - 言語範囲をカスタマイズするための情報を含むマップ
      戻り値:
      カスタマイズ付き言語優先度リスト。 リストは変更可能です。
      例外:
      NullPointerException - rangesがnullの場合。
      IllegalArgumentException - 指定されたrangesに見つかる言語範囲または重みが整形式でない場合
      関連項目:
      parse(String)mapEquivalents(java.util.List<java.util.Locale.LanguageRange>、java.util.Map<java.lang.String, java.util.List<java.lang.String>>)
    • mapEquivalents

      public static List<Locale.LanguageRange> mapEquivalents​(List<Locale.LanguageRange> priorityList, Map<String,​List<String>> map)
      指定されたpriorityListmapを使って新しいカスタマイズされた言語優先度リストを生成します。 指定されたmapが空の場合、このメソッドは指定されたpriorityListのコピーを返します。

      マップでは、キーは言語範囲を表し、値はそれの同等なもののリストです。マップでは'*'を使用できません。 すべての同等言語範囲は、その元の言語範囲と同じ重み値を持ちます。

        An example of map:
          Key                            Value
            "zh" (Chinese)                 "zh",
                                           "zh-Hans"(Simplified Chinese)
            "zh-HK" (Chinese, Hong Kong)   "zh-HK"
            "zh-TW" (Chinese, Taiwan)      "zh-TW"
       
      カスタマイズは、IANA Language Subtag Registryを使用した変更の後に実行されます。

      たとえば、ユーザーの言語優先度リストが5つの言語範囲("zh""zh-CN""en""zh-TW"および"zh-HK")から構成される場合、前述のマップ例を使用してカスタマイズされる、新しく生成される言語優先度リストは、"zh""zh-Hans""zh-CN""zh-Hans-CN""en""zh-TW"および"zh-HK"から構成されます。

      "zh-HK"および"zh-TW""zh-Hans-HK"および"zh-Hans-TW"に変換されません(それらが言語優先度リストに含まれている場合でも)。 この例では、マッピングは簡体字中国語と繁体字中国語を明確に区別するために使用されます。

      "zh"から"zh"へのマッピングがマップに含まれない場合、単純な置換が実行され、カスタマイズされたリストには"zh""zh-CN"は含まれません。

      パラメータ:
      priorityList - ユーザーの言語優先度リスト
      map - 言語範囲をカスタマイズするための情報を含むマップ
      戻り値:
      カスタマイズ付きの新しい言語優先度リスト。 リストは変更可能です。
      例外:
      NullPointerException - priorityListnullの場合
      関連項目:
      parse(String, Map)
    • hashCode

      public int hashCode()
      オブジェクトのハッシュ・コード値を返します。
      オーバーライド:
      hashCode 、クラス:  Object
      戻り値:
      このオブジェクトのハッシュ・コード値。
      関連項目:
      Object.equals(java.lang.Object), System.identityHashCode(java.lang.Object)
    • equals

      public boolean equals​(Object obj)
      このオブジェクトを指定されたオブジェクトと比較します。 結果がtrueになるのは、引数がnullでなく、このオブジェクトと同じrangeおよびweight値を含むLanguageRangeオブジェクトである場合だけです。
      オーバーライド:
      equals 、クラス:  Object
      パラメータ:
      obj - 比較対象のオブジェクト
      戻り値:
      このオブジェクトのrangeおよびweightobjと同じ場合はtrue、それ以外の場合はfalse
      関連項目:
      Object.hashCode()HashMap
    • toString

      public String toString()
      このLanguageRangeオブジェクトの有益な文字列表現を返します。範囲が重み付けされ、その重みが最大の重みよりも小さい場合、言語の範囲と重みからなります。
      オーバーライド:
      toString 、クラス:  Object
      戻り値:
      このLanguageRangeオブジェクトの文字列表現。