- java.lang.Object
-
- java.util.Locale
-
- 实现的所有接口
-
Serializable
,Cloneable
public final class Localeextends Objectimplements 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.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语言环境键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 class
Locale.Builder
Builder
用于从setter配置的值构建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中定义的 语言范围 。
-
字段汇总
字段 变量和类型 字段 描述 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
适用于国家的常数。
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 Object
clone()
覆盖Cloneable。boolean
equals(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 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中定义的所有双字母国家/地区代码的列表。static Set<String>
getISOCountries(Locale.IsoCountryCode type)
返回Set
的指定类型的ISO3166国家代码。static String[]
getISOLanguages()
返回ISO 639中定义的所有双字母语言代码的列表。String
getLanguage()
返回此Locale的语言代码。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)
, 常数字段值
-
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)
和type
Locale.IsoCountryCode.PART1_ALPHA2
。注意:
Locale
类还支持国家(地区)的其他代码,例如3个字母的数字UN M.49区域代码。 因此,此方法返回的列表不包含可用于创建区域设置的所有有效代码。请注意,此方法不会返回过时的双字母国家/地区代码。 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代码类型。 - 结果
-
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
-
-