ResourceBundle.Control.GetCandidateLocales(String, Locale) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
返回一个 ListLocales 作为候选区域设置, baseName 并 locale返回 。
[Android.Runtime.Register("getCandidateLocales", "(Ljava/lang/String;Ljava/util/Locale;)Ljava/util/List;", "GetGetCandidateLocales_Ljava_lang_String_Ljava_util_Locale_Handler")]
public virtual System.Collections.Generic.IList<Java.Util.Locale>? GetCandidateLocales(string baseName, Java.Util.Locale locale);
[<Android.Runtime.Register("getCandidateLocales", "(Ljava/lang/String;Ljava/util/Locale;)Ljava/util/List;", "GetGetCandidateLocales_Ljava_lang_String_Ljava_util_Locale_Handler")>]
abstract member GetCandidateLocales : string * Java.Util.Locale -> System.Collections.Generic.IList<Java.Util.Locale>
override this.GetCandidateLocales : string * Java.Util.Locale -> System.Collections.Generic.IList<Java.Util.Locale>
参数
- baseName
- String
资源捆绑包的基名称,完全限定的类名
- locale
- Locale
需要其资源捆绑的区域设置
返回
List给定的候选Locale项locale
- 属性
注解
返回一个 ListLocales 作为候选区域设置, baseName 并 locale返回 。 每次工厂方法尝试查找目标Locale的资源捆绑包时,工厂方法都会调用ResourceBundle.getBundle此方法。
候选区域设置的顺序也对应于运行时资源查找路径(也称为 父链),如果候选区域设置的相应资源捆绑存在,并且其父级本身未定义。 如果需要将基本捆绑包作为父链的终端,则列表的最后一个元素必须是 Locale#ROOT 根区域设置。
如果给定的区域设置等于 Locale.ROOT (根区域设置), List 则必须仅返回包含根 Locale 的区域设置。 在这种情况下, ResourceBundle.getBundle 工厂方法仅加载基础捆绑包作为生成的资源捆绑包。
这不是返回不可变(不可修改) List的要求。 但是,返回的 List 元素在返回后 getCandidateLocales不得变变。
默认实现使用下面所述的规则返回包含的一个List。Locale 在下面的说明中, <em>L</em>、 <em>S</em>、 <em>C</em> 和 <em>V</em> 分别表示非空语言、脚本、国家/地区和变体。 例如,[<em>L</em>, <em>C</em>] 表示 Locale 仅对语言和国家/地区具有非空值。 格式 <em>L</em>(“xx”)表示(非空)语言值为“xx”。 对于所有情况, Locale将省略其最终组件值为空字符串的 s。
<ol><li>对于具有空脚本值的输入 Locale ,请通过逐个省略最终组件来追加候选 Locale项,如下所示:
<ul><li> [<em>L</em>, <em>C</em>, <em>V</em>] </li li>>< [<em>L</em>, <em C</em] /li li [<em>>L</em>>] <</li>>Locale.ROOT<<><> li/li/li></ul></li>
<li>对于具有非空脚本值的输入 Locale ,请通过省略最终组件到语言来追加候选 Locale项,然后追加从 Locale 国家/地区生成的候选项并还原变体:
<ul><li> [<em>L</em>>, <em>S</em, em C</em>, <><em>V</em]</li li><> [<em>L</em>, <em>S</em>, <em>C</>em>]/li [><em L</>><em]</li><> [em L></em]</li li><> [<em>L</em>, em>C</em, <><em>V</em>]</li li><> [<em>L</em>, <em>C</em>]/li li>>< [<em>L</em>]<</li li><Locale.ROOT/li<>/li></ul></li>
<li>对于包含多个子标记(由下划线分隔的多个子标记)的输入 Locale ,通过省略变体子标记逐个生成候选 Locale项,然后在原始列表中具有完整变体值的每次出现 Locale后插入它们。 例如,如果变体由两个子标记 <em>V1</em> 和 <em>V2</em> 组成:
<ul><li> [<em>L</em, <>em S</>em, em C</>em>, <>em>V1</em>, <<em>V2</em]</li li>>< [<em>L</em>, <>em S</>em>, em C</>em, <><>em V1</>em]</li li>>< [<>em L</>em, em>S</em>, <<em>C</em]></li><li> [<em>L/em>, <em>S</em>]</li li>>< [<em>L<</em, em>C</em>>, <em>V1</em>, <<em>V2</em]</li li>>< [<em>L</>em>, em C</>em, <><>em V1</>em]</li li>>< [<em>L</em>, <em C></em>]</li li><> [<em>L</em>]</li li><<>Locale.ROOT/li/li></ul></li>
<李>特写中文。 当输入 Locale 具有语言“zh”(中文)和空脚本值时,可能会提供“Hans”(简体中文)或“Hant”(传统),具体取决于国家/地区。 如果国家为“CN”(中国)或“SG”(新加坡),则提供“Hans”。 当国家为“HK”(香港特别行政区)、“MO”(澳门特区中国)或“TW”(台湾),则提供“汉特”。 对于所有其他国家/地区或当国家/地区为空时,不提供任何脚本。 例如,Locale("zh", "CN") 候选列表为:<ul<>li> [<em>L</em>(“zh”),<em>S</em(“Hans”),em C/em>(“HANs<”),em>C</em(“CN”)]</li li>>< [<em>L</em(“zh><”),em S</>>em>(“Hans”)]</li li<>> [<em>L</>em(“zh<”),em C</em(“CN”)]/li li [em L/em>(“CN”)]</li li><> [<em>>L</em>(“zh”“]</li li>Locale.ROOT><</li></ul>
对于Locale("zh", "TW"),候选列表将为:<ul<>li> [<>em L</em>(“zh”),<em>S</em>(“Hant<”),em>C</em>(“TW”)]</li li>>< [<em>L</em(“zh><”),em S</>>em(“Hant”)]</li li><> [<em>L</em(“zh<”),em>C</>em>(“TW”)]</li li><> [<em>L</em>(“zh”)]/<li li>><Locale.ROOT</li></ul></li>
<挪威语的李>特例。 两者都 Locale("no", "NO", "NY") 代表 Locale("nn", "NO") 挪威尼诺斯克。 当区域设置的语言为“nn”时,标准候选列表将生成至 [<em>L</em>(“nn”)],然后添加以下候选项:
<ul><li> [<em>L</em>(“no”),<>em C</>em(“NO<”),em>V</em>(“NY”)]</li li> [<em>L</em(“no”),<em C</em>>(“NO”)]</li<>li>>< [<em>>L</em>(“no”)]</li li><Locale.ROOT/li>><</ul>
如果区域设置完全正确 Locale("no", "NO", "NY"),则首先转换为 Locale("nn", "NO") 上述过程,然后遵循上述过程。
此外,Java将语言“no”视为挪威博克和 #xE5; 的同义词;l “nb”。 除了单例 Locale("no", "NO", "NY") (上面处理),当输入 Locale 具有语言“no”或“nb”时,带有语言代码“no”和“nb”的候选 Locale项交错,首先使用请求的语言,然后使用其同义词。 例如, Locale("nb", "NO", "POSIX") 生成以下候选列表:
<ul><li> [<em>L</em>(“nb”),<>em C</>em(“NO<”),em>V</em>(“POSIX”)]</li li><> [<em>L</em(“no”),<em C</em>(“NO”),<>em>V</>>em(“POSIX”)]</li li><> [<>em L</em>(“nb”),em C/em(“NB<”),em>C</em>(“NO”)]</li li><> [<em>L</em>(“no”), <em>C</em>(“NO”)]</li li>>< [<em>L</em>(“nb”)]</li li><> [<em>L</em>(“no”)]</li li>>Locale.ROOT<</li></ul>
Locale("no", "NO", "POSIX") 将生成相同的列表,只不过具有“no”的区域设置会显示在具有“nb”的相应区域设置之前。</li></ol>
默认实现使用 ArrayList 重写实现可以在将实现返回到调用方之前对其进行修改。 但是,子类在返回 getCandidateLocales后不得对其进行修改。
例如,如果给定 baseName 为“消息”且给定 locale 为 Locale("ja", "", "XX"),则为 s ListLocale:
Locale("ja", "", "XX")
Locale("ja")
Locale.ROOT
。 如果找到“ja”和“” Locales 的资源捆绑包,则运行时资源查找路径(父链)为:
{@code
Messages_ja -> Messages
}
Java文档java.util.ResourceBundle.Control.getCandidateLocales(java.lang.String, java.util.Locale)。
本页的某些部分是根据 创建和共享的工作进行的修改,并根据 许可证中所述的条款使用。