- java.lang.Object
-
- java.util.Locale
-
- All Implemented Interfaces:
-
Serializable
,Cloneable
public final class Locale extends Object implements Cloneable, Serializable
ALocale
对象代表具体的地理,政治或文化区域。 需要Locale
执行其任务的操作称为区域设置敏感型,并使用Locale
为用户定制信息。 例如,显示一个数字是一个区域设置敏感的操作 - 该数字应该根据用户的本地国家,地区或文化的习惯和惯例进行格式化。Locale
类实现了IETF BCP 47,它由RFC 4647 "Matching of Language Tags"和RFC 5646 "Tags for Identifying Languages"组成,支持LDML(UTS#35,“Unicode语言环境数据标记语言”)BCP 47兼容的本地数据交换扩展。A
Locale
对象逻辑上由以下描述的字段组成。- language
-
ISO 639 alpha-2或alpha-3语言代码或最多8个字母字母的注册语言子标签(用于未来的增强功能)。
当语言同时具有alpha-2代码和alpha-3代码时,必须使用alpha-2代码。
您可以在IANA Language Subtag Registry中找到有效语言代码的完整列表(搜索“Type:language”)。
语言字段不区分大小写,但
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区号。
新新新新200新新旗新新200新200新新200新200新200新200新200新200新新200新200新新200新200新新200新200新新200新200新新200新200新新200新新200新新200新新200新新200新新200新新200新新200新新200新新200新新200新新200新新200新新200新新200新新200新新200新新200新新200新新200新新200新新200新新200新新200新新200新新200新新200
国家(地区)字段不区分大小写,但
Locale
总是规范化为大写。 -
形式良好的国家/地区价值形式为
[a-zA-Z]{2} | [0-9]{3}
- 示例:“美国”(美国),“FR”(法国),“029”(加勒比)
- variant
-
任何用于指示
Locale
的变化的任意值。 在有两个或多个变体值的情况下,每个值都表示自己的语义,这些值应按重要性排序,最重要的是首先用下划线('_')分隔。 变体字段区分大小写。 -
注意:IETF BCP 47对变式子标签放置语法限制。
此外,BCP 47子标签也被严格用于表示定义语言或其方言的其他变体,这些语言或语言不被语言,脚本和区域子标签的任何组合覆盖。
您可以在IANA语言小标签注册表中找到有效的变体代码的完整列表(搜索“Type:variant”)。
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
扩展名不区分大小写,但是Locale
所有扩展键和值规范化为小写。 请注意,扩展名不能有空值。 -
[0-9a-zA-Z]
键是[0-9a-zA-Z]
中的单个字符。 格式SUBTAG ('-' SUBTAG)*
值为SUBTAG ('-' SUBTAG)*
,其中对于“x”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”表示泰国本地数字(值:“thai”)应用于格式化数字(键:“nu”)。
新新新新新新旗新新新旗新新旗新新新旗新新旗新新新旗新新旗旗新新旗新新旗200新新新新旗新新旗旗新新旗新新200新新新旗200新新新新旗新新200新新200新新新新旗新新200新新200新新新200新新200新新200新新200新新新200新新200新新新200新新200新新新200新新200新新200新新200新新新200新新200新新新200新新200 上述例子“nu-thai”成为“u-nu-thai”的扩展。
因此,当一个
Locale
对象包含Unicode区域设置属性和关键字时,getExtension(UNICODE_LOCALE_EXTENSION)
将返回一个表示此信息的字符串,例如“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} ('-' [0-9a-zA-Z]{3,8})*
)。 一个格式良好的区域设置属性的格式为[0-9a-zA-Z]{3,8}
(它是一个单独的子标签,具有与区域设置类型子标签相同的形式)。Unicode区域设置扩展名指定区域设置敏感服务中的可选行为。 虽然LDML规范定义了各种键和值,Java运行时环境中的实际区域设置敏感的服务实现可能不支持任何特定的Unicode区域设置属性或键/类型对。
创建区域设置
有几种不同的方法来创建一个
Locale
对象。生成器
使用
Locale.Builder
你可以构造一个Locale
对象符合BCP 47语法。构造函数
Locale
类提供三个构造函数:Locale(String language)
Locale(String language, String country)
Locale(String language, String country, String variant)
Locale
对象,但不能指定脚本或扩展名。工厂方法
200新
Locale
-45 旗新新新新200新新旗新新新新新新新新新旗200新新200 200 200新新200新200新200新新200新新200新新200新新新200新新200新新旗200新新200新新200新新200新新200新新200新新200新新200新新200新新200新新200新新200新新旗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"
,按照优先次序,查找方法逐渐搜索下面的语言标签,以便找到最佳匹配语言标签。1. zh-Hant-TW 2. zh-Hant 3. zh 4. en-US 5. en
"*"
是特殊的语言范围,在查找中被忽略。作为语言范围中包含的子标签
'*'
的结果,如果多个语言标签相匹配,'*'
返回的Iterator
超过Collection
的语言标签的第一匹配语言标签被视为最佳匹配语言标签。使用区域设置
一旦你创建了一个
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
方法也是如此。 因此,区域设置对象可以继续使用。 特别是,将toString的输出解析为语言,国家和变体字段的客户端可以继续这样做(尽管这是非常不鼓励的),尽管如果存在脚本或扩展,变体字段将具有其他信息。此外,BCP 47强加了Locale的构造函数不强加的语法限制。 这意味着在不丢失信息的情况下,无法进行某些区域设置和BCP 47语言标记之间的转换。 因此,
toLanguageTag
不能代表其语言,国家或变体不符合BCP 47的语言环境的状态。由于这些问题,建议客户端迁移构建不合格的区域设置,并使用
forLanguageTag
和Locale.Builder
API。 因此,希望完整语言环境的字符串表示的客户端可以始终依赖于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区域设置扩展名来指定Unicode区域设置密钥nu
(对于“number”)和值thai
。 当使用参数“th”,“TH”,“TH”调用Locale构造函数时,会自动添加扩展名“u-nu-thai”。序列化
在序列化期间,writeObject将所有字段写入输出流,包括扩展。
在反序列化期间,readResolve会按照Special Cases中的说明添加扩展,仅适用于th_TH_TH和ja_JP_JP两种情况。
传统语言代码
语言环境的构造一直变换的三个语言代码到其以前的,过时的形式:
he
映射到iw
,yi
映射到ji
,并id
映射到in
。 这种情况依然如此,为了不破坏兼容性。这些API在新旧语言代码之间的1.7地图中添加,并将旧代码保留在Locale内部(以便
getLanguage
和toString
反映旧代码),但是使用BCP 47语言标签API中的新代码(以便toLanguageTag
反映新的那一个)。 无论使用哪个代码或API来构造它们,都可以保持区域设置之间的等价性。 Java的默认资源包查找机制也实现了这种映射,因此可以使用任何一种约定命名资源,参见ResourceBundle.Control
。三字母语言/国家(地区)代码
Locale构造函数一直指定语言和国家参数长度为两个字符,但实际上它们已经接受了任何长度。 该规范现已放宽,允许2至8个字符的语言代码和2到3个字符的国家(地区)代码,特别是IANA语言分条注册表中指定的三个字母的语言代码和三位数区域代码。 为了兼容性,实现仍然不会强加长度约束。
- 从以下版本开始:
- 1.1
- 另请参见:
-
Locale.Builder
,ResourceBundle
,Format
,NumberFormat
,Collator
, Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class 描述 static class
Locale.Builder
Builder
用于从设置器配置的值构建Locale
实例。static class
Locale.Category
枚举地区类别。static class
Locale.FilteringMode
此枚举提供常量来选择区域设置匹配的过滤模式。static class
Locale.IsoCountryCode
用于指定ISO 3166中定义的类型的枚举。static class
Locale.LanguageRange
该类表示 RFC 4647 Matching of Language Tags中定义的 语言范围 。
-
Field Summary
Fields Modifier and Type Field 描述 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
对国家有用的常数。
-
方法摘要
所有方法 静态方法 接口方法 具体的方法 Modifier and Type 方法 描述 Object
clone()
覆盖可克隆。boolean
equals(Object obj)
如果此区域设置等于另一个对象,则返回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()
返回此区域设置的国家/地区代码,该代码应为空字符串,大写ISO 3166 2字母代码或UN M.49 3位代码。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()
返回此区域设置的国家/地区的三个字母的缩写。String
getISO3Language()
返回此语言环境的三个字母缩写。static String[]
getISOCountries()
返回ISO 3166中定义的所有2个字母的国家/地区代码的列表。static Set<String>
getISOCountries(Locale.IsoCountryCode type)
返回Set
的指定类型的ISO3166国家代码。static String[]
getISOLanguages()
返回ISO 639中定义的所有2个字母的语言代码的列表。String
getLanguage()
返回此区域设置的语言代码。String
getScript()
返回此语言环境的脚本,该脚本应为空字符串或ISO 15924 4字母脚本代码。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 newLocale)
设置Java虚拟机的此实例的默认语言环境。static void
setDefault(Locale.Category category, Locale newLocale)
为Java虚拟机的此实例设置指定类别的默认语言环境。Locale
stripExtensions()
返回此Locale
的副本,不包括 extensions 。String
toLanguageTag()
返回一个格式正确的IETF BCP 47语言标签,代表这个区域。String
toString()
返回此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)
, Constant Field Values
-
UNICODE_LOCALE_EXTENSION
public static final char UNICODE_LOCALE_EXTENSION
Unicode区域扩展('u')的关键。- 从以下版本开始:
- 1.7
- 另请参见:
-
getExtension(char)
,Locale.Builder.setExtension(char, String)
, Constant Field Values
-
-
构造方法详细信息
-
Locale
public Locale(String language, String country, String variant)
从语言,国家和变体构建语言环境。 该构造函数将语言值规范化为小写,将国家值标准化为大写。注意:
- ISO 639不是一个稳定的标准; 它定义的一些语言代码(特别是“iw”,“ji”和“in”)已经改变了。 此构造函数接受旧代码(“iw”,“ji”和“in”)和新代码(“he”,“yi”和“id”),但所有其他API在Locale上将仅返回OLD代码。
- 由于向后兼容性原因,此构造函数不对输入进行任何语法检查。
- 特殊处理两种情况(“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
- 如果任何参数为空,则抛出。
-
Locale
public Locale(String language, String country)
从语言和国家构建语言环境。 该构造函数将语言值规范化为小写,将国家值标准化为大写。注意:
- ISO 639不是一个稳定的标准; 它定义的一些语言代码(特别是“iw”,“ji”和“in”)已经改变了。 此构造函数接受旧代码(“iw”,“ji”和“in”)和新代码(“he”,“yi”和“id”),但所有其他API在Locale上将仅返回OLD代码。
- 由于向后兼容性原因,此构造函数不对输入进行任何语法检查。
- 参数
-
language
- ISO 639 alpha-2或alpha-3语言代码或最多8个字符的语言子标签。 请参阅有关有效语言值的Locale
类描述。 -
country
- ISO 3166 alpha-2国家代码或UN M.49数字-3区号。 请参阅有关有效国家/地区值的Locale
类描述。 - 异常
-
NullPointerException
- 如果任一参数为空,则抛出。
-
Locale
public Locale(String language)
从语言代码构建语言环境。 该构造函数将语言值规范化为小写。注意:
- ISO 639不是一个稳定的标准; 它定义的一些语言代码(特别是“iw”,“ji”和“in”)已经改变了。 此构造函数接受旧代码(“iw”,“ji”和“in”)和新代码(“he”,“yi”和“id”),但所有其他API在Locale上将仅返回OLD代码。
- 由于向后兼容性原因,此构造函数不对输入进行任何语法检查。
- 参数
-
language
- ISO 639 alpha-2或alpha-3语言代码或最多8个字符的语言子标签。 请参阅有关有效语言值的Locale
类描述。 - 异常
-
NullPointerException
- 如果参数为null,则抛出。 - 从以下版本开始:
- 1.4
-
-
方法详细信息
-
getDefault
public static Locale getDefault()
获取Java虚拟机的此实例的默认语言环境的当前值。Java虚拟机根据主机环境在启动期间设置默认语言环境。 如果没有显式指定区域设置,则会被许多区域设置敏感的方法使用。 可以使用
setDefault
方法更改。- 结果
- Java虚拟机的此实例的默认区域设置
-
getDefault
public static Locale getDefault(Locale.Category category)
获取Java虚拟机的此实例的指定类别的默认语言环境的当前值。Java虚拟机根据主机环境在启动期间设置默认语言环境。 如果没有显式指定区域设置,则会被许多区域设置敏感的方法使用。 它可以使用setDefault(Locale.Category,Locale)方法更改。
- 参数
-
category
- - 指定类别获取默认语言环境 - 结果
- Java虚拟机的此实例的指定类别的默认语言环境
- 异常
-
NullPointerException
- 如果category为null - 从以下版本开始:
- 1.7
- 另请参见:
-
setDefault(Locale.Category, Locale)
-
setDefault
public static void setDefault(Locale newLocale)
设置Java虚拟机的此实例的默认语言环境。 这不影响主机区域设置。如果有安全管理器,则在默认语言环境更改之前,其
checkPermission
方法将被调用PropertyPermission("user.language", "write")
权限。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.US
的Locale
实例。- 结果
- 一组已安装的区域设置。
-
getISOCountries
public static String[] getISOCountries()
返回在ISO 3166中定义的所有2个字母的国家/地区代码的列表。可用于创建区域设置。 该方法相当于getISOCountries(Locale.IsoCountryCode type)
,其中type
Locale.IsoCountryCode.PART1_ALPHA2
。注意:
Locale
类还支持国家(地区)的其他代码,例如3字母数字UN M.49区号。 因此,此方法返回的列表不包含可用于创建区域设置的所有有效代码。请注意,此方法不会返回过时的2个字母的国家/地区代码。 其中指定的那些过时的代码的国家代码ISO3166-3码,可以从被检索
getISOCountries(Locale.IsoCountryCode type)
与type
Locale.IsoCountryCode.PART3
。- 结果
- 一系列ISO 3166双字母国家代码。
-
getISOCountries
public static Set<String> getISOCountries(Locale.IsoCountryCode type)
返回Set
的指定类型的ISO3166国家代码。- 参数
-
type
-Locale.IsoCountryCode
指定的ISO代码类型。 - 结果
-
一个指定类型的ISO国家代码的
Set
。 - 异常
-
NullPointerException
- 如果type为null - 从以下版本开始:
- 9
- 另请参见:
-
Locale.IsoCountryCode
-
getISOLanguages
public static String[] getISOLanguages()
返回ISO 639中定义的所有2个字母的语言代码的列表。可用于创建区域设置。注意:
- ISO 639不是一个稳定的标准 - 一些语言的代码已经改变。 此函数返回的列表包括代码已更改的语言的新旧代码。
-
Locale
类还支持长达8个字符的语言代码。 因此,此方法返回的列表不包含可用于创建区域设置的所有有效代码。
- 结果
- 一组ISO 639双字母语言代码。
-
getLanguage
public String getLanguage()
返回此区域设置的语言代码。注意: 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
的副本,无扩展名,或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区域设置类型,如果区域设置未定义密钥,则为空。
- 异常
-
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
的预期只有语言,国家和变量字段。 要将交换用作字符串表示为字符串,请使用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
- 结果
- 用于调试的语言环境的字符串表示形式。
- 另请参见:
-
getDisplayName()
,toLanguageTag()
-
-
toLanguageTag
public String toLanguageTag()
返回一个格式正确的IETF BCP 47语言标签,代表这个区域。如果此
Locale
具有不满足IETF BCP 47语言标签语法要求的语言,国家或变体,则此方法将按如下所述处理这些字段:语言:如果语言为空,或者不是well-formed (例如“a”或“e2”),则将以“und”(未确定)的形式发出。
国家:如果国家不是well-formed (例如“12”或“美国”),将省略。
变式:如果变量为 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”和挪威Nynorsk(挪威)的变体“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 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语言分条注册表(搜索“类型: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)
返回适合显示给用户的语言环境语言的名称。 如果可能,返回的名称将根据“地址”进行本地化。 例如,如果语言环境是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)
返回适合显示给用户的区域设置国家/地区的名称。 如果可能,返回的名称将根据“地址”进行本地化。 例如,如果语言环境是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)
返回适合显示给用户的区域设置变体代码的名称。 如果可能,该名称将在本地化为在Locale。 如果语言环境未指定变体代码,则此函数返回空字符串。- 参数
-
inLocale
- 用于检索显示变体代码的区域设置。 - 结果
- 适用于给定语言环境的显示变体代码的名称。
- 异常
-
NullPointerException
- 如果inLocale
是null
-
getDisplayName
public final String getDisplayName()
返回适合显示给用户的区域设置的名称。 这将是getDisplayLanguage(),getDisplayScript(),getDisplayCountry()和getDisplayVariant()返回的值组合成一个字符串。 非空值按顺序使用,第二个和后续名称在括号中。 例如:language (script, country, variant)
取决于在区域设置中指定的字段。 如果语言,脚本,国家和变体字段都为空,则此函数返回空字符串。
language (country)
language (variant)
script (country)
country
- 结果
- 适合显示的区域的名称。
-
getDisplayName
public String getDisplayName(Locale inLocale)
返回适合显示给用户的区域设置的名称。 这将是getDisplayLanguage(),getDisplayScript(),getDisplayCountry()和getDisplayVariant()返回的值组合成一个字符串。 非空值按顺序使用,第二个和后续名称在括号中。 例如:language (script, country, variant)
取决于在区域设置中指定的字段。 如果语言,脚本,国家和变体字段都为空,则此函数返回空字符串。
language (country)
language (variant)
script (country)
country
- 参数
-
inLocale
- 要检索显示名称的区域设置。 - 结果
- 适合显示的区域的名称。
- 异常
-
NullPointerException
- 如果inLocale
是null
-
hashCode
public int hashCode()
覆盖hashCode。 由于语言环境通常用于散列表,因此将速度缓存。- 重写:
-
hashCode
在Object
- 结果
- 该对象的哈希码值。
- 另请参见:
-
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
-
equals
public boolean equals(Object obj)
如果此区域设置等于另一个对象,则返回true。 语言区域被视为与另一个具有相同语言,脚本,国家,变体和扩展名的区域设置相同,并且与所有其他对象不相等。- 重写:
-
equals
在Object
- 参数
-
obj
- 用于比较的参考对象。 - 结果
- 如果此区域设置等于指定的对象,则为true。
- 另请参见:
-
Object.hashCode()
,HashMap
-
filter
public static List<Locale> filter(List<Locale.LanguageRange> priorityList, Collection<Locale> locales, Locale.FilteringMode mode)
使用RFC 4647中定义的过滤机制返回匹配的Locale
实例的列表。- 参数
-
priorityList
- 用户的语言优先级列表,其中每个语言标签根据优先级或权重按降序排序 -
locales
-Locale
用于匹配的实例 -
mode
- 过滤模式 - 结果
-
一个
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
。- 参数
-
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中定义的基本过滤机制返回匹配语言标签的列表。- 参数
-
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
。- 参数
-
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中定义的查找机制返回最匹配的语言标签。- 参数
-
priorityList
- 用户的语言优先级列表,其中每个语言标签按照优先级或权重按降序排序 -
tags
- 用于匹配的语言tags
- 结果
-
基于优先级或权重选择的最佳匹配语言标签,如果没有匹配,
null
。 - 异常
-
NullPointerException
- 如果priorityList
或tags
是null
- 从以下版本开始:
- 1.8
-
-