- java.lang.Object
-
- java.util.Locale
-
- 实现的所有接口
-
Serializable,Cloneable
public final class Locale extends Object implements Cloneable, Serializable
Locale对象代表特定的地理,政治或文化区域。 需要Locale执行其任务的操作称为区域设置敏感,并使用Locale为用户定制信息。 例如,显示数字是区域设置敏感操作 - 应根据用户原生国家,地区或文化的习惯和惯例格式化数字。Locale类实现了IETF BCP 47,它由RFC 4647 "Matching of Language Tags"和RFC 5646 "Tags for Identifying Languages"组成,支持LDML(UTS#35,“Unicode语言环境数据标记语言”)BCP 47兼容的语言环境数据交换扩展。Locale对象在逻辑上由下面描述的字段组成。- language
-
ISO 639 alpha-2或alpha-3语言代码,或注册语言子标签最多8个字母(用于将来的增强)。
当语言同时具有alpha-2代码和alpha-3代码时,必须使用alpha-2代码。
您可以在IANA语言子标签注册表中找到有效语言代码的完整列表(搜索“类型:语言”)。
语言字段不区分大小写,但
Locale始终标准化为小写。 -
格式良好的语言值的格式为
[a-zA-Z]{2,8}。 请注意,这不是完整的BCP47语言生成,因为它不包括extlang。 由于现代三字母语言代码取代了它们,因此不需要它们。 - 例如:“en”(英文),“ja”(日文),“kok”(Konkani)
- script
-
ISO 15924 alpha-4脚本代码。
您可以在IANA语言子标签注册表中找到有效脚本代码的完整列表(搜索“类型:脚本”)。
脚本字段不区分大小写,但
Locale始终标准化为标题大小写(第一个字母为大写,其余字母为小写)。 -
格式良好的脚本值的格式为
[a-zA-Z]{4} - 示例:“Latn”(拉丁语),“Cyrl”(西里尔语)
- country (region)
-
ISO 3166 alpha-2国家代码或UN M.49数字-3区号。
您可以在IANA语言子标签注册表中找到有效国家和地区代码的完整列表(搜索“类型:区域”)。
国家(地区)字段不区分大小写,但
Locale始终标准化为大写。 -
格式良好的国家/地区值的格式为
[a-zA-Z]{2} | [0-9]{3} - 示例:“US”(美国),“FR”(法国),“029”(加勒比海)
- variant
-
用于表示
Locale的变体的任意值。 如果有两个或多个变量值,每个变量值都指示其自己的语义,则这些值应按重要性排序,最重要的是,首先用下划线('_')分隔。 变体字段区分大小写。 -
注意:IETF BCP 47对变体子标签设置了语法限制。
此外,BCP 47子标签严格用于表示定义语言或其方言的其他变体,这些变体未被语言,脚本和区域子标签的任何组合所涵盖。
您可以在IANA语言子标签注册表中找到有效变体代码的完整列表(搜索“类型:变体”)。
但是,
Locale的变体字段历来用于任何类型的变体,而不仅仅是语言变体。 例如,Java SE运行时环境中可用的一些受支持的变体表示其他文化行为,例如日历类型或数字脚本。 在BCP 47中,这种不识别语言的信息由扩展子标签或私人使用子标签支持。 -
格式良好的变体值的形式为
SUBTAG (('_'|'-') SUBTAG)*,其中SUBTAG = [0-9][0-9a-zA-Z]{3} | [0-9a-zA-Z]{5,8}。 (注意:BCP 47只使用连字符(' - ')作为分隔符,这样更宽松)。 - 示例:“polyton”(Polytonic Greek),“POSIX”
- extensions
-
从单个字符键到字符串值的映射,指示除语言标识之外的扩展。
Locale的扩展实现了BCP 47扩展子标签和私有子标签的语义和语法。 扩展名不区分大小写,但Locale所有扩展键和值规范化为小写。 请注意,扩展名不能包含空值。 -
[0-9a-zA-Z]良好的键是[0-9a-zA-Z]中的单个字符。 格式良好的值的格式为SUBTAG ('-' SUBTAG)*,其中键'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类不提供任何验证功能。Builder仅检查单个字段是否满足语法要求(格式正确),但不验证值本身。 有关详细信息,请参见Locale.Builder。Unicode locale/language extension
UTS#35,“Unicode区域设置数据标记语言”定义了可选属性和关键字,以覆盖或优化与区域设置关联的默认行为。 关键字由一对键和类型表示。 例如,“nu-thai”表示应使用泰语本地数字(值:“泰语”)来格式化数字(键:“nu”)。
使用扩展键“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 Locale Extension按字母顺序列出属性,后跟按键/类型序列,按键按字母顺序列出(定义类型时,包含键类型的子标签的顺序是固定的)格式
[0-9a-zA-Z]{2}区域设置键的格式为[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类提供了三个构造函数:
这些构造函数允许您使用语言,国家/地区和变体创建Locale(String language)Locale(String language, String country)Locale(String language, String country, String variant)Locale对象,但不能指定脚本或扩展名。工厂方法
方法
forLanguageTag(java.lang.String)为Locale良好的BCP 47语言标签创建Locale对象。区域设置常量
Locale类提供了许多方便的常量,您可以使用这些Locale为常用语言环境创建Locale对象。 例如,以下内容为美国创建了一个Locale对象:Locale.US
Locale Matching
如果应用程序或系统已国际化并为多个区域设置提供本地化资源,则有时需要找到满足每个用户特定首选项的一个或多个区域设置(或语言标记)。 请注意,术语“语言标记”与此区域设置匹配文档中的“区域设置”可互换使用。
为了将用户的首选语言环境与一组语言标记进行匹配, RFC 4647 Matching of Language Tags定义了两种机制:过滤和查找。 过滤用于获取所有匹配的区域设置,而查找用于选择最佳匹配的区域设置。 匹配是不区分大小写的。 以下各节介绍了这些匹配机制。
用户的偏好称为语言优先级列表 ,并表示为语言范围列表。 语法上有两种语言范围:基本和扩展。 有关详细信息,请参见
Locale.LanguageRange。过滤
过滤操作返回所有匹配的语言标记。 它在RFC 4647中定义如下:“在过滤中,每个语言范围代表最不具体的语言标记(即,子标记数量最少的语言标记),这是可接受的匹配。匹配集合中的所有语言标记标签的子标签数量等于或大于语言范围的数量。语言范围内的每个非通配符子标签都会出现在每个匹配的语言标签中。“
有两种类型的过滤:基本语言范围的过滤(称为“基本过滤”)和扩展语言范围的过滤(称为“扩展过滤”)。 它们可能会根据给定语言优先级列表中包含的语言范围返回不同的结果。
Locale.FilteringMode是一个参数,用于指定应如何进行过滤。抬头
查找操作返回最佳匹配语言标记。 它在RFC 4647中定义如下:“与过滤相反,每个语言范围代表最可接受匹配的特定标记。根据用户的优先级找到的第一个匹配标记被认为是最接近的匹配,并且是项目回。”
例如,如果语言优先级列表由两个语言范围
"zh-Hant-TW"和"en-US"组成,"zh-Hant-TW"优先顺序,查找方法逐步搜索下面的语言标记,以便找到最佳匹配语言标记。
如果语言标记与上述语言范围完全匹配,则返回语言标记。1. zh-Hant-TW 2. zh-Hant 3. zh 4. en-US 5. en"*"是特殊语言范围,在查找时会被忽略。如果有多个语言标签匹配作为子标记的结果
'*'包括在语言范围内,所述第一匹配的语言标记由一个返回Iterator在Collection语言标记的被视为最佳匹配之一。使用Locale
创建
Locale您可以查询它以获取有关自身的信息。 使用getCountry获取国家(或地区)代码,使用getLanguage获取语言代码。 您可以使用getDisplayCountry获取适合向用户显示的国家/地区名称。 同样,您可以使用getDisplayLanguage获取适合显示给用户的语言名称。 有趣的是,getDisplayXXX方法本身对语言环境敏感,有两个版本:一个使用默认的DISPLAY语言环境,另一个使用指定为参数的语言环境。Java平台提供了许多执行区域设置敏感操作的类。 例如,
NumberFormat类以区域设置敏感的方式格式化数字,货币和百分比。 像NumberFormat这样的类有几种方便的方法来创建该类型的默认对象。 例如,NumberFormat类为创建默认的NumberFormat对象提供了以下三种便捷方法:
这些方法中的每一种都有两种变体; 一个具有明确的语言环境而另一个没有; 后者使用默认的NumberFormat.getInstance() NumberFormat.getCurrencyInstance() NumberFormat.getPercentInstance()FORMAT语言环境:NumberFormat.getInstance(myLocale) NumberFormat.getCurrencyInstance(myLocale) NumberFormat.getPercentInstance(myLocale)Locale是用于识别您想要获得的对象类型(NumberFormat)的机制。 语言环境只是一种识别对象的机制, 而不是对象本身的容器。兼容性
为了保持与现有用法的兼容性,Locale的构造函数在Java Runtime Environment 1.7版之前保留其行为。
toString方法也是如此。 因此,Locale对象可以继续按原样使用。 特别是,将toString的输出解析为语言,国家和变体字段的客户端可以继续这样做(尽管强烈建议不要这样做),尽管如果存在脚本或扩展,变体字段中将包含其他信息。此外,BCP 47强加了语法限制,而不是Locale的构造函数强加的。 这意味着无法在不丢失信息的情况下进行某些Locales和BCP 47语言标记之间的转换。 因此,
toLanguageTag不能表示其语言,国家或变体不符合BCP 47的语言环境的状态。由于存在这些问题,建议客户端不要构建不符合要求的语言环境,而应使用
forLanguageTag和Locale.BuilderAPI。 因此,希望完整语言环境的字符串表示的客户端可以始终依赖toLanguageTag。Special cases
出于兼容性原因,两个不符合要求的语言环境被视为特殊情况。 这些是
ja_JP_JP和th_TH_TH。 这些在BCP 47中是不正确的,因为变体太短。 为了便于迁移到BCP 47,这些都在施工期间得到了特殊处理。 这两种情况(并且只有这些)导致构造函数生成扩展,所有其他值的行为与Java 7之前完全相同。Java使用
ja_JP_JP代表日本和日本帝国日历一起使用日语。 现在可以使用Unicode语言环境扩展来表示,通过指定Unicode语言环境键ca(用于“日历”)并键入japanese。 当使用参数“ja”,“JP”,“JP”调用Locale构造函数时,会自动添加扩展名“u-ca-japanese”。Java使用
th_TH_TH来表示在泰国使用的泰语以及泰国数字。 现在,通过指定Unicode语言环境键nu(“number”)和值thai,可以使用Unicode语言环境扩展来thai。 当使用参数“th”,“TH”,“TH”调用Locale构造函数时,会自动添加扩展名“u-nu-thai”。序列化
在序列化期间,writeObject将所有字段写入输出流,包括扩展。
在反序列化期间,readResolve添加扩展,如Special Cases中所述 ,仅针对th_TH_TH和ja_JP_JP这两种情况。
旧版语言代码
语言环境的构造一直变换的三个语言代码到其以前的,过时的形式:
he映射到iw,yi映射到ji,并id映射到in。 这种情况仍然如此,以免破坏向后兼容性。1.7中添加的API映射旧语言代码和新语言代码,维护旧代码内部的Locale(以便
getLanguage和toString反映旧代码),但使用BCP 47语言标记API中的新代码(以便toLanguageTag反映新的那一个)。 无论使用哪种代码或API来构造它们,这都会保留Locales之间的等价性。 Java的默认资源包查找机制也实现了此映射,因此可以使用任一约定命名资源,请参阅ResourceBundle.Control。三个字母的语言/国家(地区)代码
Locale构造函数总是指定语言和国家参数的长度是两个字符,尽管在实践中它们已经接受了任何长度。 该规范现已放宽,允许使用2到8个字符的语言代码和2到3个字符的国家(地区)代码,特别是IANA语言子标签注册表中指定的三字母语言代码和三位数区域代码。 为了兼容性,实现仍然没有强加长度约束。
- 从以下版本开始:
- 1.1
- 另请参见:
-
Locale.Builder,ResourceBundle,Format,NumberFormat,Collator, Serialized Form
-
-
嵌套类汇总
嵌套类 变量和类型 类 描述 static classLocale.BuilderBuilder用于从setter配置的值构建Locale实例。static classLocale.Category枚举用于区域设置类别。static classLocale.FilteringMode此枚举提供常量以选择用于区域设置匹配的过滤模式。static classLocale.IsoCountryCode用于指定ISO 3166中定义的类型的枚举。static classLocale.LanguageRange此类表示 RFC 4647 Matching of Language Tags中定义的 语言范围 。
-
字段汇总
字段 变量和类型 字段 描述 static LocaleCANADA适用于国家的常数。static LocaleCANADA_FRENCH适用于国家的常数。static LocaleCHINA适用于国家的常数。static LocaleCHINESE有用的语言常量。static LocaleENGLISH有用的语言常量。static LocaleFRANCE适用于国家的常数。static LocaleFRENCH有用的语言常量。static LocaleGERMAN有用的语言常量。static LocaleGERMANY适用于国家的常数。static LocaleITALIAN有用的语言常量。static LocaleITALY适用于国家的常数。static LocaleJAPAN适用于国家的常数。static LocaleJAPANESE有用的语言常量。static LocaleKOREA适用于国家的常数。static LocaleKOREAN有用的语言常量。static LocalePRC适用于国家的常数。static charPRIVATE_USE_EXTENSION私人使用扩展的关键('x')。static LocaleROOT根区域设置的有用常量。static LocaleSIMPLIFIED_CHINESE有用的语言常量。static LocaleTAIWAN适用于国家的常数。static LocaleTRADITIONAL_CHINESE有用的语言常量。static LocaleUK适用于国家的常数。static charUNICODE_LOCALE_EXTENSIONUnicode区域设置扩展的关键('u')。static LocaleUS适用于国家的常数。
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 Objectclone()覆盖Cloneable。booleanequals(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 LocaleforLanguageTag(String languageTag)返回指定的IETF BCP 47语言标记字符串的语言环境。static Locale[]getAvailableLocales()返回所有已安装语言环境的数组。StringgetCountry()返回此语言环境的国家/地区代码,该代码应为空字符串,大写ISO 3166 2字母代码或UN M.49 3位代码。static LocalegetDefault()获取此Java虚拟机实例的缺省语言环境的当前值。static LocalegetDefault(Locale.Category category)获取此Java虚拟机实例的指定类别的缺省语言环境的当前值。StringgetDisplayCountry()返回适合显示给用户的语言环境国家/地区的名称。StringgetDisplayCountry(Locale inLocale)返回适合显示给用户的语言环境国家/地区的名称。StringgetDisplayLanguage()返回适合显示给用户的语言环境语言的名称。StringgetDisplayLanguage(Locale inLocale)返回适合显示给用户的语言环境语言的名称。StringgetDisplayName()返回适合显示给用户的语言环境的名称。StringgetDisplayName(Locale inLocale)返回适合显示给用户的语言环境的名称。StringgetDisplayScript()返回适合显示给用户的语言环境脚本的名称。StringgetDisplayScript(Locale inLocale)返回适合显示给用户的语言环境脚本的名称。StringgetDisplayVariant()返回适合显示给用户的语言环境变体代码的名称。StringgetDisplayVariant(Locale inLocale)返回适合显示给用户的语言环境变体代码的名称。StringgetExtension(char key)返回与指定键关联的扩展(或私有用途)值,如果没有与该键关联的扩展名,则返回null。Set<Character>getExtensionKeys()返回与此语言环境关联的扩展键集,如果没有扩展名,则返回空集。StringgetISO3Country()返回此区域设置国家/地区的三字母缩写。StringgetISO3Language()返回此语言环境语言的三个字母缩写。static String[]getISOCountries()返回ISO 3166中定义的所有双字母国家/地区代码的列表。static Set<String>getISOCountries(Locale.IsoCountryCode type)返回Set的指定类型的ISO3166国家代码。static String[]getISOLanguages()返回ISO 639中定义的所有双字母语言代码的列表。StringgetLanguage()返回此Locale的语言代码。StringgetScript()返回此语言环境的脚本,该脚本应为空字符串或ISO 15924 4字母脚本代码。Set<String>getUnicodeLocaleAttributes()返回与此语言环境关联的unicode语言环境属性集,如果没有属性,则返回空集。Set<String>getUnicodeLocaleKeys()返回此语言环境定义的Unicode语言环境键集,如果此语言环境没有,则返回空集。StringgetUnicodeLocaleType(String key)返回与此语言环境的指定Unicode语言环境键关联的Unicode语言环境类型。StringgetVariant()返回此语言环境的变体代码。booleanhasExtensions()inthashCode()覆盖hashCode。static Localelookup(List<Locale.LanguageRange> priorityList, Collection<Locale> locales)使用RFC 4647中定义的查找机制返回最佳匹配语言标记的Locale实例。static StringlookupTag(List<Locale.LanguageRange> priorityList, Collection<String> tags)使用RFC 4647中定义的查找机制返回最匹配的语言标记。static voidsetDefault(Locale newLocale)设置此Java虚拟机实例的缺省语言环境。static voidsetDefault(Locale.Category category, Locale newLocale)为此Java虚拟机实例设置指定类别的缺省语言环境。LocalestripExtensions()返回此Locale的副本,但没有 extensions 。StringtoLanguageTag()返回表示此区域设置的格式良好的IETF BCP 47语言标记。StringtoString()返回此Locale对象的字符串表示形式,包括语言,国家/地区,变体,脚本和扩展名,如下所示:language +“_”+ country +“_”+(variant +“_#”|“#”)+ script +“_”+扩展语言总是小写,国家总是大写,脚本总是标题大小写,扩展名总是小写。
-
-
-
字段详细信息
-
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
适用于国家的常数。
-
CHINA
public static final Locale CHINA
适用于国家的常数。
-
PRC
public static final Locale PRC
适用于国家的常数。
-
TAIWAN
public static final Locale TAIWAN
适用于国家的常数。
-
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
-
PRIVATE_USE_EXTENSION
public static final char PRIVATE_USE_EXTENSION
私人使用扩展的关键('x')。- 从以下版本开始:
- 1.7
- 另请参见:
-
getExtension(char),Locale.Builder.setExtension(char, String), 常数字段值
-
UNICODE_LOCALE_EXTENSION
public static final char UNICODE_LOCALE_EXTENSION
Unicode区域设置扩展的关键('u')。- 从以下版本开始:
- 1.7
- 另请参见:
-
getExtension(char),Locale.Builder.setExtension(char, String), 常数字段值
-
-
构造方法详细信息
-
Locale
public Locale(String language, String country, String variant)
根据语言,国家和变体构建语言环境。 此构造函数将语言值规范化为小写,将国家/地区值规范化为大写。注意:
- ISO 639不是一个稳定的标准; 它定义的一些语言代码(特别是“iw”,“ji”和“in”)已经改变。 此构造函数接受旧代码(“iw”,“ji”和“in”)和新代码(“he”,“yi”和“id”),但Locale上的所有其他API将仅返回旧代码。
- 出于向后兼容性原因,此构造函数不对输入进行任何语法检查。
- 两种情况(“ja”,“JP”,“JP”)和(“th”,“TH”,“TH”)是专门处理的,有关详细信息,请参阅Special Cases 。
- 参数
-
language- ISO 639 alpha-2或alpha-3语言代码,或长度不超过8个字符的语言子标签。 请参阅有关有效语言值的Locale类说明。 -
country- ISO 3166 alpha-2国家/地区代码或UN M.49数字-3区号。 请参阅有关有效国家/地区值的Locale类说明。 -
variant- 用于表示Locale变体的任意值。 有关详细信息,请参阅Locale类说明。 - 异常
-
NullPointerException- 如果任何参数为null,则抛出。
-
Locale
public Locale(String language, String country)
从语言和国家构建语言环境。 此构造函数将语言值规范化为小写,将国家/地区值规范化为大写。注意:
- ISO 639不是一个稳定的标准; 它定义的一些语言代码(特别是“iw”,“ji”和“in”)已经改变。 此构造函数接受旧代码(“iw”,“ji”和“in”)和新代码(“he”,“yi”和“id”),但Locale上的所有其他API将仅返回旧代码。
- 出于向后兼容性原因,此构造函数不对输入进行任何语法检查。
- 参数
-
language- ISO 639 alpha-2或alpha-3语言代码,或长度不超过8个字符的语言子标签。 请参阅有关有效语言值的Locale类说明。 -
country- ISO 3166 alpha-2国家/地区代码或UN M.49数字-3区号。 请参阅有关有效国家/地区值的Locale类说明。 - 异常
-
NullPointerException- 如果任一参数为null,则抛出。
-
Locale
public Locale(String language)
从语言代码构造语言环境。 此构造函数将语言值规范化为小写。注意:
- ISO 639不是一个稳定的标准; 它定义的一些语言代码(特别是“iw”,“ji”和“in”)已经改变。 此构造函数接受旧代码(“iw”,“ji”和“in”)和新代码(“he”,“yi”和“id”),但Locale上的所有其他API将仅返回旧代码。
- 出于向后兼容性原因,此构造函数不对输入进行任何语法检查。
- 参数
-
language- ISO 639 alpha-2或alpha-3语言代码,或长度不超过8个字符的语言子标签。 请参阅有关有效语言值的Locale类说明。 - 异常
-
NullPointerException- 如果参数为null,则抛出。 - 从以下版本开始:
- 1.4
-
-
方法详细信息
-
getDefault
public static Locale getDefault()
获取此Java虚拟机实例的缺省语言环境的当前值。Java虚拟机根据主机环境在启动期间设置默认语言环境。 如果未明确指定语言环境,则许多语言环境敏感方法使用它。 可以使用
setDefault方法更改它。- 结果
- 此虚拟机实例的缺省语言环境
-
getDefault
public static Locale getDefault(Locale.Category category)
获取此Java虚拟机实例的指定类别的缺省语言环境的当前值。Java虚拟机根据主机环境在启动期间设置默认语言环境。 如果未明确指定语言环境,则许多语言环境敏感方法使用它。 可以使用setDefault(Locale.Category,Locale)方法更改它。
- 参数
-
category- - 获取默认语言环境的指定类别 - 结果
- 此虚拟机实例的指定类别的缺省语言环境
- 异常
-
NullPointerException- 如果category为null - 从以下版本开始:
- 1.7
- 另请参见:
-
setDefault(Locale.Category, Locale)
-
setDefault
public static void setDefault(Locale newLocale)
设置此Java虚拟机实例的缺省语言环境。 这不会影响主机区域设置。如果存在安全管理器,则在更改默认语言环境之前,将使用
PropertyPermission("user.language", "write")权限调用其checkPermission方法。Java虚拟机根据主机环境在启动期间设置默认语言环境。 如果未明确指定语言环境,则许多语言环境敏感方法使用它。
由于更改默认语言环境可能会影响许多不同的功能区域,因此只有在调用方准备重新初始化在同一Java虚拟机中运行的区域设置敏感代码时,才应使用此方法。
通过使用此方法设置默认语言环境,每个类别的所有默认语言环境也都设置为指定的默认语言环境。
- 参数
-
newLocale- 新的默认语言环境 - 异常
-
SecurityException- 如果存在安全管理器且其checkPermission方法不允许该操作。 -
NullPointerException- 如果newLocale为空 - 另请参见:
-
SecurityManager.checkPermission(java.security.Permission),PropertyPermission
-
setDefault
public static void setDefault(Locale.Category category, Locale newLocale)
为此Java虚拟机实例设置指定类别的缺省语言环境。 这不会影响主机区域设置。如果存在安全管理器,则在更改默认语言环境之前,将使用PropertyPermission(“user.language”,“write”)权限调用其checkPermission方法。
Java虚拟机根据主机环境在启动期间设置默认语言环境。 如果未明确指定语言环境,则许多语言环境敏感方法使用它。
由于更改默认语言环境可能会影响许多不同的功能区域,因此只有在调用方准备重新初始化在同一Java虚拟机中运行的区域设置敏感代码时,才应使用此方法。
- 参数
-
category- 指定的类别以设置默认语言环境 -
newLocale- - 新的默认语言环境 - 异常
-
SecurityException- 如果存在安全管理器且其checkPermission方法不允许该操作。 -
NullPointerException- 如果category和/或newLocale为null - 从以下版本开始:
- 1.7
- 另请参见:
-
SecurityManager.checkPermission(java.security.Permission),PropertyPermission,getDefault(Locale.Category)
-
getAvailableLocales
public static Locale[] getAvailableLocales()
返回所有已安装语言环境的数组。 返回的数组表示Java运行时环境和已安装的LocaleServiceProvider实现支持的语言环境的并集 。 它必须至少包含Locale实例,等于Locale.US。- 结果
- 一系列已安装的语言环境。
-
getISOCountries
public static String[] getISOCountries()
返回ISO 3166中定义的所有双字母国家/地区代码的列表。可用于创建语言环境。 此方法相当于getISOCountries(Locale.IsoCountryCode type)和typeLocale.IsoCountryCode.PART1_ALPHA2。注意:
Locale类还支持国家(地区)的其他代码,例如3个字母的数字UN M.49区域代码。 因此,此方法返回的列表不包含可用于创建区域设置的所有有效代码。请注意,此方法不会返回过时的双字母国家/地区代码。 ISO3166-3代码指定那些过时代码的国家代码,可以从
getISOCountries(Locale.IsoCountryCode type)和typeLocale.IsoCountryCode.PART3中检索。- 结果
- 一系列ISO 3166双字母国家/地区代码。
-
getISOCountries
public static Set<String> getISOCountries(Locale.IsoCountryCode type)
返回Set的指定类型的ISO3166国家代码。- 参数
-
type-Locale.IsoCountryCode指定的ISO代码类型。 - 结果
-
Set指定类型的ISO国家/地区代码。 - 异常
-
NullPointerException- 如果type为null - 从以下版本开始:
- 9
- 另请参见:
-
Locale.IsoCountryCode
-
getISOLanguages
public static String[] getISOLanguages()
返回ISO 639中定义的所有双字母语言代码的列表。可用于创建语言环境。注意:
- ISO 639不是一个稳定的标准 - 某些语言的代码已经改变。 此函数返回的列表包括代码已更改的语言的新代码和旧代码。
-
Locale类还支持最多8个字符的语言代码。 因此,此方法返回的列表不包含可用于创建区域设置的所有有效代码。
- 结果
- 一系列ISO 639双字母语言代码。
-
getLanguage
public String getLanguage()
返回此Locale的语言代码。注意: ISO 639不是一个稳定的标准 - 某些语言的代码已经改变。 Locale的构造函数识别代码已更改的语言的新旧代码,但此函数始终返回旧代码。 如果要检查代码已更改的特定语言,请不要这样做
if (locale.getLanguage().equals("he")) // BAD! ...相反,做if (locale.getLanguage().equals(new Locale("he").getLanguage())) ...- 结果
- 语言代码,如果没有定义,则为空字符串。
- 另请参见:
-
getDisplayLanguage()
-
getScript
public String getScript()
返回此语言环境的脚本,该脚本应为空字符串或ISO 15924 4字母脚本代码。 第一个字母是大写字母,其余字母是小写字母,例如“Latn”,“Cyrl”。- 结果
- 脚本代码,如果没有定义,则为空字符串。
- 从以下版本开始:
- 1.7
- 另请参见:
-
getDisplayScript()
-
getCountry
public String getCountry()
返回此语言环境的国家/地区代码,该代码应为空字符串,大写ISO 3166 2字母代码或UN M.49 3位代码。- 结果
- 国家/地区代码,如果没有定义,则为空字符串。
- 另请参见:
-
getDisplayCountry()
-
getVariant
public String getVariant()
返回此语言环境的变体代码。- 结果
- 变量代码,如果没有定义,则为空字符串。
- 另请参见:
-
getDisplayVariant()
-
hasExtensions
public boolean hasExtensions()
- 结果
-
true若有Locale有任何扩展 - 从以下版本开始:
- 1.8
-
stripExtensions
public Locale stripExtensions()
返回此Locale的副本,没有extensions 。 如果这Locale没有Locale将返回Locale。- 结果
-
此
Locale的副本没有扩展名,或this如果this没有扩展名 - 从以下版本开始:
- 1.8
-
getExtension
public String getExtension(char key)
返回与指定键关联的扩展(或私有用途)值,如果没有与该键关联的扩展名,则返回null。 要形成良好,关键必须是[0-9A-Za-z]。 键不区分大小写,因此例如'z'和'Z'表示相同的扩展名。- 参数
-
key- 扩展密钥 - 结果
- 扩展名,如果此语言环境未指定指定键的扩展名,则返回null。
- 异常
-
IllegalArgumentException- 如果密钥IllegalArgumentException不正确 - 从以下版本开始:
- 1.7
- 另请参见:
-
PRIVATE_USE_EXTENSION,UNICODE_LOCALE_EXTENSION
-
getExtensionKeys
public Set<Character> getExtensionKeys()
返回与此语言环境关联的扩展键集,如果没有扩展名,则返回空集。 返回的集是不可修改的。 钥匙都是小写的。- 结果
- 扩展键集,如果此语言环境没有扩展名,则为空集。
- 从以下版本开始:
- 1.7
-
getUnicodeLocaleAttributes
public Set<String> getUnicodeLocaleAttributes()
返回与此语言环境关联的unicode语言环境属性集,如果没有属性,则返回空集。 返回的集是不可修改的。- 结果
- 属性集。
- 从以下版本开始:
- 1.7
-
getUnicodeLocaleType
public String getUnicodeLocaleType(String key)
返回与此语言环境的指定Unicode语言环境键关联的Unicode语言环境类型。 返回没有类型定义的键的空字符串。 如果未定义键,则返回null。 密钥不区分大小写。 密钥必须是两个字母数字字符([0-9a-zA-Z]),否则抛出IllegalArgumentException。- 参数
-
key- Unicode语言环境键 - 结果
- 与键关联的Unicode语言环境类型,如果语言环境未定义键,则为null。
- 异常
-
IllegalArgumentException- 如果密钥IllegalArgumentException不正确 -
NullPointerException- 如果key为空 - 从以下版本开始:
- 1.7
-
getUnicodeLocaleKeys
public Set<String> getUnicodeLocaleKeys()
返回此语言环境定义的Unicode语言环境键集,如果此语言环境没有,则返回空集。 返回的集合是不可变的。 钥匙都是小写的。- 结果
- Unicode区域设置键的集合,如果此区域设置没有Unicode区域设置关键字,则为空集。
- 从以下版本开始:
- 1.7
-
toString
public final String toString()
返回此Locale对象的字符串表示形式,包括语言,国家/地区,变体,脚本和扩展名,如下所示:language + "_" + country + "_" + (variant + "_#" | "#") + script + "_" + extensions
语言总是小写,国家总是大写,脚本总是标题大小写,扩展名总是小写。 扩展和私有子标签将按照规范顺序进行,如toLanguageTag()中所述 。当语言环境既没有脚本也没有扩展名时,结果与Java 6和之前的结果相同。
如果缺少语言和国家/地区字段,则此函数将返回空字符串,即使存在变量,脚本或扩展字段(您不能使用仅具有变体的区域设置,该变体必须伴随井 - 形成语言或国家代码)。
如果存在脚本或扩展并且缺少变体,则在“#”之前不会添加下划线。
此行为旨在支持调试并与之前仅使用预期语言,国家/地区和变体字段的
toString兼容。 要将Locale表示为字符串以进行交换,请使用toLanguageTag()。例子:
-
en -
de_DE -
_GB -
en_US_WIN -
de__POSIX -
zh_CN_#Hans -
zh_TW_#Hant_x-java -
th_TH_TH_#u-nu-thai
- 重写:
-
toString在类Object - 结果
- Locale的字符串表示形式,用于调试。
- 另请参见:
-
getDisplayName(),toLanguageTag()
-
-
toLanguageTag
public String toLanguageTag()
返回表示此区域设置的格式良好的IETF BCP 47语言标记。如果此
Locale具有不满足IETF BCP 47语言标记语法要求的语言,国家/地区或变体,则此方法将处理这些字段,如下所述:语言:如果语言为空,或者不是well-formed (例如“a”或“e2”),则将以“und”(未确定)的形式发出。
国家/地区:如果国家/地区不是well-formed (例如“12”或“USA”),则将省略。
变体:如果变体是 well-formed ,则每个子片段(由“ - ”或“_”分隔)将作为子标签发出。 除此以外:
- 如果所有子段都匹配
[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”作为“x-lvariant-Solaris”发出,而不是“solaris”。
特殊转换: Java支持一些旧的语言环境表示,包括不推荐使用的ISO语言代码,以实现兼容性。 此方法执行以下转换:
- 不推荐的ISO语言代码“iw”,“ji”和“in”分别被转换为“he”,“yi”和“id”。
- 具有语言“no”,国家“NO”和变体“NY”的语言环境(代表挪威尼诺斯克语(挪威语))被转换为语言标签“nn-NO”。
注意:尽管此方法创建的语言标记格式正确(满足IETF BCP 47规范定义的语法要求),但它不一定是有效的BCP 47语言标记。 例如,
new Locale("xx", "YY").toLanguageTag();将返回“xx-YY”,但语言子标签“xx”和区域子标签“YY”无效,因为它们未在IANA语言子标签注册表中注册。- 结果
- 表示区域设置的BCP47语言标记
- 从以下版本开始:
- 1.7
- 另请参见:
-
forLanguageTag(String)
- 如果所有子段都匹配
-
forLanguageTag
public static Locale forLanguageTag(String languageTag)
返回指定的IETF BCP 47语言标记字符串的语言环境。如果指定的语言标记包含任何格式错误的子标记,则忽略第一个此类子标记和所有后续子标记。 与在这种情况下抛出异常的
Locale.Builder.setLanguageTag(java.lang.String)相比。执行以下转换 :
- 语言代码“und”映射到语言“”。
- 语言代码“he”,“yi”和“id”分别映射到“iw”,“ji”和“in”。 (这与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参数包含extlang子标签时,第一个这样的子标签用作语言,主要语言子标签和其他extlang子标签将被忽略:
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"
这实现了BCP47的“语言标签”制作,因此支持grandfathered(常规和不规则)以及私人使用语言标签。 独立的私人使用标签表示为空语言和扩展名“x-whatever”,并且grandfathered标签将转换为它们存在的规范替换。
标准替换的Grandfathered标签如下:
Grandfathered tags with canonical replacements grandfathered tag modern replacement 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没有现代替代品的Grandfathered标签将转换如下:
Grandfathered tags with no modern replacement grandfathered tag converts to 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 - 从以下版本开始:
- 1.7
- 另请参见:
-
toLanguageTag(),Locale.Builder.setLanguageTag(String)
-
getISO3Language
public String getISO3Language() throws MissingResourceException
返回此语言环境语言的三个字母缩写。 如果语言与ISO 639-1双字母代码匹配,则返回相应的ISO 639-2 / T三字母小写代码。 可以在线找到ISO 639-2语言代码,请参阅“语言名称表示代码第2部分:Alpha-3代码”。 如果语言环境指定了三个字母的语言,则按原样返回语言。 如果语言环境未指定语言,则返回空字符串。- 结果
- 这个语言环境语言的三个字母缩写。
- 异常
-
MissingResourceException- 如果此区域设置没有三字母语言缩写,则抛出MissingResourceException。
-
getISO3Country
public String getISO3Country() throws MissingResourceException
返回此区域设置国家/地区的三字母缩写。 如果国家/地区与ISO 3166-1 alpha-2代码匹配,则返回相应的ISO 3166-1 alpha-3大写代码。 如果区域设置未指定国家/地区,则这将是空字符串。ISO 3166-1代码可以在线找到。
- 结果
- 此区域设置国家/地区的三个字母缩写。
- 异常
-
MissingResourceException- 如果三个字母的国家/地区缩写不适用于此语言环境,则抛出MissingResourceException。
-
getDisplayLanguage
public final String getDisplayLanguage()
返回适合显示给用户的语言环境语言的名称。 如果可能,返回的名称将针对默认的DISPLAY语言环境进行本地化。 例如,如果语言环境是fr_FR且默认的DISPLAY语言环境是en_US,则getDisplayLanguage()将返回“French”; 如果语言环境是en_US且默认的DISPLAY语言环境是fr_FR,则getDisplayLanguage()将返回“anglais”。 如果返回的名称无法针对默认的DISPLAY语言环境进行本地化(例如,我们没有克罗地亚语的日语名称),则此函数将依赖于英语名称,并使用ISO代码作为最后的值。 如果语言环境未指定语言,则此函数返回空字符串。- 结果
- 显示语言的名称。
-
getDisplayLanguage
public String getDisplayLanguage(Locale inLocale)
返回适合显示给用户的语言环境语言的名称。 如果可能,返回的名称将根据inLocale进行本地化。 例如,如果语言环境是fr_FR而inLocale是en_US,则getDisplayLanguage()将返回“French”; 如果语言环境是en_US且inLocale是fr_FR,则getDisplayLanguage()将返回“anglais”。 如果返回的名称无法根据inLocale进行本地化(例如,我们没有克罗地亚语的日语名称),则此函数将依赖于英语名称,最后将ISO代码作为最后的值。 如果语言环境未指定语言,则此函数返回空字符串。- 参数
-
inLocale- 要检索显示语言的语言环境。 - 结果
- 适合给定语言环境的显示语言的名称。
- 异常
-
NullPointerException- 如果inLocale是null
-
getDisplayScript
public String getDisplayScript(Locale inLocale)
返回适合显示给用户的语言环境脚本的名称。 如果可能,将为给定的区域设置本地化名称。 如果此语言环境未指定脚本代码,则返回空字符串。- 参数
-
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代码作为最后的值。 如果语言环境未指定国家/地区,则此函数返回空字符串。- 结果
- 适合该区域设置的国家/地区名称。
-
getDisplayCountry
public String getDisplayCountry(Locale inLocale)
返回适合显示给用户的语言环境国家/地区的名称。 如果可能,返回的名称将根据inLocale进行本地化。 例如,如果语言环境是fr_FR而inLocale是en_US,则getDisplayCountry()将返回“France”; 如果语言环境是en_US且inLocale是fr_FR,则getDisplayCountry()将返回“Etats-Unis”。 如果返回的名称无法根据inLocale进行本地化。 (比如,我们没有克罗地亚的日文名称),这个函数依赖于英文名称,最后是ISO代码作为最后的值。 如果语言环境未指定国家/地区,则此函数返回空字符串。- 参数
-
inLocale- 要检索显示国家/地区的区域设置。 - 结果
- 适合给定语言环境的国家/地区名称。
- 异常
-
NullPointerException- 如果inLocale是null
-
getDisplayVariant
public final String getDisplayVariant()
- 结果
- 适用于区域设置的显示变体代码的名称。
-
getDisplayVariant
public String getDisplayVariant(Locale inLocale)
返回适合显示给用户的语言环境变体代码的名称。 如果可能,该名称将针对inLocale进行本地化。 如果语言环境未指定变体代码,则此函数返回空字符串。- 参数
-
inLocale- 要检索显示变体代码的语言环境。 - 结果
- 适用于给定语言环境的显示变体代码的名称。
- 异常
-
NullPointerException- 如果inLocale是null
-
getDisplayName
public final String getDisplayName()
返回适合显示给用户的语言环境的名称。 这将是getDisplayLanguage(),getDisplayScript(),getDisplayCountry(),getDisplayVariant()和可选Unicode extensions组合成单个字符串的值。 非空值按顺序使用,括号中的第二个和后续名称。 例如:language (script, country, variant(, extension)*)
取决于区域设置中指定的字段。 上述括号中的字段分隔符(表示为逗号字符)可以根据区域设置进行本地化。 如果语言,脚本,国家/地区和变体字段都为空,则此函数返回空字符串。
language (country(, extension)*)
language (variant(, extension)*)
script (country(, extension)*)
country (extension)*
- 结果
- 适合显示的语言环境的名称。
-
getDisplayName
public String getDisplayName(Locale inLocale)
返回适合显示给用户的语言环境的名称。 这将是getDisplayLanguage(),getDisplayScript(),getDisplayCountry()getDisplayVariant()和可选Unicode extensions组合成单个字符串的值。 非空值按顺序使用,括号中的第二个和后续名称。 例如:language (script, country, variant(, extension)*)
取决于区域设置中指定的字段。 上述括号中的字段分隔符(表示为逗号字符)可以根据区域设置进行本地化。 如果语言,脚本,国家/地区和变体字段都为空,则此函数返回空字符串。
language (country(, extension)*)
language (variant(, extension)*)
script (country(, extension)*)
country (extension)*
- 参数
-
inLocale- 要检索显示名称的语言环境。 - 结果
- 适合显示的语言环境的名称。
- 异常
-
NullPointerException- 如果inLocale是null
-
hashCode
public int hashCode()
覆盖hashCode。 由于Locales通常用在哈希表中,因此缓存了speed的值。- 重写:
-
hashCode在类Object - 结果
- 此对象的哈希码值。
- 另请参见:
-
Object.equals(java.lang.Object),System.identityHashCode(java.lang.Object)
-
equals
public boolean equals(Object obj)
如果此Locale等于另一个对象,则返回true。 区域设置被视为与具有相同语言,脚本,国家/地区,变体和扩展名的其他区域设置相同,并且与所有其他对象不相等。- 重写:
-
equals在类Object - 参数
-
obj- 要与之比较的引用对象。 - 结果
- 如果此Locale等于指定的对象,则返回true。
- 另请参见:
-
Object.hashCode(),HashMap
-
filter
public static List<Locale> filter(List<Locale.LanguageRange> priorityList, Collection<Locale> locales, Locale.FilteringMode mode)
使用RFC 4647中定义的过滤机制返回匹配的Locale实例的列表。对给定locales此过滤操作可确保仅返回唯一匹配的区域设置。- 参数
-
priorityList- 用户的语言优先级列表,其中每个语言标记根据优先级或权重按降序排序 -
locales-Locale用于匹配的实例 -
mode- 过滤模式 - 结果
-
用于匹配基于优先级或权重的降序排序的语言标记的
Locale实例列表,如果没有匹配Locale空列表排序。 该列表是可修改的。 - 异常
-
NullPointerException- 如果priorityList或locales是null -
IllegalArgumentException- 如果指定了Locale.FilteringMode.REJECT_EXTENDED_RANGES,则给定列表中包含一个或多个扩展语言范围 - 从以下版本开始:
- 1.8
-
filter
public static List<Locale> filter(List<Locale.LanguageRange> priorityList, Collection<Locale> locales)
返回匹配的列表Locale使用RFC 4647这等同所限定的过滤机制,以实例filter(List, Collection, FilteringMode)当mode是Locale.FilteringMode.AUTOSELECT_FILTERING。 对给定locales此筛选操作可确保仅返回唯一匹配的语言环境。- 参数
-
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此过滤操作确保仅返回具有保留大小写的唯一匹配标记。 如果具有大小写差异的重复匹配标记,则返回具有保留大小写的第一个匹配标记。 例如,如果在给定的tags首先检查“de-ch”是否匹配,tags重复匹配标签“de-ch”和“de-CH”返回“de-ch”。 请注意,如果给定的tags是无序的Collection,则重复标记中返回的匹配标记可能会发生变化,具体取决于Collection的实现。- 参数
-
priorityList- 用户的语言优先级列表,其中每个语言标记根据优先级或权重按降序排序 -
tags- 语言标签 -
mode- 过滤模式 - 结果
- 基于优先级或权重按降序排序的匹配语言标记列表,如果没有匹配则按空列表排序。 该列表是可修改的。
- 异常
-
NullPointerException- 如果priorityList或tags是null -
IllegalArgumentException- 如果指定了Locale.FilteringMode.REJECT_EXTENDED_RANGES,则给定列表中包含一个或多个扩展语言范围 - 从以下版本开始:
- 1.8
-
filterTags
public static List<String> filterTags(List<Locale.LanguageRange> priorityList, Collection<String> tags)
返回使用RFC 4647。这相当于定义了基本的过滤机制来匹配语言标签的列表filterTags(List, Collection, FilteringMode)时mode为Locale.FilteringMode.AUTOSELECT_FILTERING。 对给定tags此过滤操作可确保仅返回具有保留大小写的唯一匹配标记。 如果具有大小写差异的重复匹配标记,则返回具有保留大小写的第一个匹配标记。 例如,如果在给定的tags首先检查“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或tags是null - 从以下版本开始:
- 1.8
-
lookupTag
public static String lookupTag(List<Locale.LanguageRange> priorityList, Collection<String> tags)
使用RFC 4647中定义的查找机制返回最匹配的语言标记。对给定tags此查找操作确保返回具有保留大小写的第一个匹配标记。- 参数
-
priorityList- 用户的语言优先级列表,其中每个语言标记根据优先级或权重按降序排序 -
tags- 用于匹配的语言tags - 结果
-
基于优先级或权重选择的最佳匹配语言标记,如果没有匹配则选择
null。 - 异常
-
NullPointerException- 如果priorityList或tags是null - 从以下版本开始:
- 1.8
-
-