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
对象逻辑包括以下领域。
Locale
规范化。
[a-zA-Z]{2,8}
。请注意,这是不完整的bcp47语言制作,因为它不包括extlang。他们是不需要的,因为现代的三个字母的语言代码取代他们。
Locale
总是规范化标题案例(第一个字母是大写的字母,其余的都是小写)。
[a-zA-Z]{4}
Locale
总是以大写的规范化。
[a-zA-Z]{2} | [0-9]{3}
Locale
。那里有两个或两个以上的变量值分别表示自己的语义,这些值应按照重要性排序,最重要的首先,分离下划线('_”)。变量字段是大小写敏感的。
然而,在Locale
变异领域历来被用于任何形式的变化,不只是语言的变化。例如,一些支持java运行环境变量表示替代文化的行为如日历类型或数量的脚本。在BCP 47这类信息,不确定的语言,是通过扩展子标签或私人用的子标签支持。
SUBTAG (('_'|'-') SUBTAG)*
哪里
SUBTAG = [0-9][0-9a-zA-Z]{3} | [0-9a-zA-Z]{5,8}
。(注:BCP 47只使用连字符(“”)作为分隔符,这是更为宽松的)。
Locale
扩展实现的语义和BCP 47扩展子标签和私人使用子标签语法。扩展名是不区分大小写,但规范化
Locale
所有扩展键和值为小写。请注意,扩展不能有空值。
[0-9a-zA-Z]
单个字符集。形成良好的价值观的形成
SUBTAG ('-' SUBTAG)*
在关键的“X”
SUBTAG = [0-9a-zA-Z]{1,8}
和其他键
SUBTAG = [0-9a-zA-Z]{2,8}
(即“X”允许单个字符的子标签)。
Locale
个子标记语言,类不提供任何验证功能。如果一个人的
Builder
只检查现场满足句法要求(良好的),但不验证本身的价值。看到
Locale.Builder
详情。
众信# 35、“Unicode现场数据标记语言”定义了重载或完善与区域关联的默认行为的可选属性和关键词。一个关键字由一对键和类型表示。例如,“女泰”表示,泰国本地数字(值:“泰国”)应用于格式化数字(键:“女”)。
关键词映射到BCP 47推广使用扩展的关键“U”(UNICODE_LOCALE_EXTENSION
)。上面的例子中,“女泰”,成为推广“u-nu-thai”码。
因此,当一个Locale
对象包含Unicode区域属性和关键词,getExtension(UNICODE_LOCALE_EXTENSION)
将返回一个字符串,这个信息,例如,“女泰”。的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 alphanums长)。一个良好的区域设置属性的形式[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
对象,国家和变异,但不能指定脚本或扩展。
方法forLanguageTag(java.lang.String)
创造了一个良好的BCP 47语言标签的Locale
对象。
的Locale
类提供了很多方便的常数,可以用来创建常用的地方Locale
对象。例如,以下为美国Locale
对象:
Locale.US
如果一个应用程序或一个系统的国际化和多个地区提供本地化的资源,有时需要找到一个或多个地点(或标记语言),满足每个用户的具体偏好。注意,术语“语言标签”是交替使用“现场”在这一区域匹配的文档。
为了匹配用户的首选地区的一组语言标签,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
"*"
是特殊的语言,它被忽略在查找。
如果多语言标签匹配的结果作为一个'*'
个子标记包含在语言的范围内,第一个匹配的语言标签返回在Collection
语言标签Iterator
作为最佳匹配。
一旦你创建了一个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
),你想得到的。现场是
只是用于识别对象的机制,
不容器对象本身。
为了保持与现有应用的兼容性,现场的施工人员保留其行为对java运行环境1.7版之前。同为toString
方法很大程度上是真实的。因此,区域设置对象可以继续被使用,因为它们是。特别是,客户解析toString为语言,国家的输出,和不同的领域可以继续这样做(虽然这是强烈反对的),虽然不同领域会有更多的信息如果脚本或扩展现有。
此外,BCP 47征收不征收现场的构造函数语法限制。这意味着一些地区和BCP 47语言标签之间的转换不能失去信息。因此toLanguageTag
不能代表区域的语言、国家、或不符合BCP变异的47。
由于这些问题,建议客户远离不良场所建设和使用forLanguageTag
和Locale.Builder
API代替。渴望的完整区域的字符串表示的客户便可以永远依靠为此toLanguageTag
。
由于兼容性的原因,两不合格场所作为特殊情况处理。这些都是ja_JP_JP和th_TH_TH。这些病形成的BCP 47由于变异太短暂。为了便于迁移到口岸47个,这些被特别处理施工。这两例(只有这些)导致构造函数生成的延伸,所有其他价值观的行为完全是他们java 7之前。
java使用ja_JP_JP代表日本作为日本与日本帝国历。这是现在可使用Unicode区域延伸,通过指定的Unicode现场关键ca(“日历”)和类型japanese。当现场调用构造函数的论据“JA”、“JP”,“JP”,扩展“u-ca-japanese”自动添加。
java使用th_TH_TH代表泰国作为泰国与泰国位数。这也是现在可使用Unicode区域延伸,通过指定的Unicode现场关键nu(“数”)和价值thai。当现场调用构造函数的论据“日”、“日”、“日”,扩展“u-nu-thai”自动添加。
在序列化期间,所有领域的writeObject写入输出流,包括扩展。
在反序列化期间,添加扩展实例描述Special Cases,只有两例th_th_th和ja_jp_jp。
现场的构造函数总是转换三语言代码之前,破坏形式:heMapiw,yiMapji,和idMapin。这仍然是这样的情况下,为了不打破向后兼容性。
1.7MapAPI添加新老语言代码之间,维持旧代码的内部区域(这样getLanguage
和toString
反映旧的代码),但使用新的代码在BCP 47语言标签的API(这样toLanguageTag
反映新的)。这保留的地方无论哪个代码或API之间的等价关系来构建他们的。java的默认资源束查找机制也实现了这种映射,使资源可以使用公约命名,看到ResourceBundle.Control
。
现场施工人员一直指定语言和国家的长度为两个字,虽然在实践中他们接受任何长度。该规范已经放宽到允许两到八个字符和国家语言代码(地区)两到三个字符的编码,并特别在IANA语言个子标记注册指定的三字母的语言代码和三位地区代码。对于兼容性,实现仍然不施加长度约束。
Locale.Builder
,
ResourceBundle
,
Format
,
NumberFormat
,
Collator
,
Serialized Form
Modifier and Type | Class and Description |
---|---|
static class |
Locale.Builder
Builder 用于配置值的制定者建立的实例
Locale 。
|
static class |
Locale.Category
现场分类枚举。
|
static class |
Locale.FilteringMode
这个枚举提供常数的选择区域设置匹配模式。
|
static class |
Locale.LanguageRange
这类表示一个定义在
RFC 4647 Matching of Language Tags语言范围。
|
Modifier and Type | Field and Description |
---|---|
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
国家有用常数。
|
Constructor and Description |
---|
Locale(String language)
从语言代码构造语言环境。
|
Locale(String language, String country)
从语言和国家建构语言环境。
|
Locale(String language, String country, String variant)
从语言、国家和变体的语言环境中构建一个语言环境。
|
Modifier and Type | Method and Description |
---|---|
Object |
clone()
覆盖可复制。
|
boolean |
equals(Object obj)
如果此区域设置等于另一个对象,则返回真。
|
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代码,或UN M.49位数代码。
|
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)
返回与指定键关联的扩展(或私有使用)值,如果没有与键关联的扩展,则为空。
|
Set<Character> |
getExtensionKeys()
返回与此区域相关联的扩展键集,或空集,如果它没有扩展。
|
String |
getISO3Country()
返回此区域设置的国家的一三个字母的缩写。
|
String |
getISO3Language()
返回此区域语言的一三个字母的缩写。
|
static String[] |
getISOCountries()
返回一个列表,在ISO 3166中定义的所有2字母的国家代码。
|
static String[] |
getISOLanguages()
返回一个列表,ISO 639中定义的所有信的语言代码。
|
String |
getLanguage()
返回此区域的语言代码。
|
String |
getScript()
返回此区域设置脚本,这要么是空字符串或ISO 15924的四个脚本代码。
|
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.Category category, Locale newLocale)
设置在这个java虚拟机实例指定类别的默认区域设置。
|
static void |
setDefault(Locale newLocale)
设置此的java虚拟机实例的默认语言。
|
Locale |
stripExtensions()
返回一份本
Locale 没有
extensions。
|
String |
toLanguageTag()
返回一个良好的IETF BCP 47语言标签代表这个区域。
|
String |
toString()
这
Locale 返回对象的字符串表示,包括语言、国家、变体、脚本和扩展如下:语言+“_”+国+“_”+(变体+“_ #”|”#”)+文字+“-”+扩展语言总是较低的情况下,国总是大写,脚本是总冠军的情况下,和扩展总是小写。
|
public static final Locale ENGLISH
public static final Locale FRENCH
public static final Locale GERMAN
public static final Locale ITALIAN
public static final Locale JAPANESE
public static final Locale KOREAN
public static final Locale CHINESE
public static final Locale SIMPLIFIED_CHINESE
public static final Locale TRADITIONAL_CHINESE
public static final Locale FRANCE
public static final Locale GERMANY
public static final Locale ITALY
public static final Locale JAPAN
public static final Locale KOREA
public static final Locale CHINA
public static final Locale PRC
public static final Locale TAIWAN
public static final Locale UK
public static final Locale US
public static final Locale CANADA
public static final Locale CANADA_FRENCH
public static final Locale ROOT
public static final char PRIVATE_USE_EXTENSION
getExtension(char)
,
Locale.Builder.setExtension(char, String)
,
Constant Field Values
public static final char UNICODE_LOCALE_EXTENSION
getExtension(char)
,
Locale.Builder.setExtension(char, String)
,
Constant Field Values
public Locale(String language, String country, String variant)
注:
language
- ISO 639α或α-3语言代码,或一个子标记语言的最大长度为8个字符。看到
Locale
类有效的语言值描述。
country
- ISO 3166α2国家代码或UN M.49 numeric-3地区代码。看到
Locale
类描述关于有效的国家价值观。
variant
-任意用来表示一个变化的一个
Locale
价值。详见
Locale
类描述。
NullPointerException
-如果任一参数为空抛。
public Locale(String language, String country)
注:
language
- ISO 639α或α-3语言代码,或一个子标记语言的最大长度为8个字符。看到
Locale
类有效的语言值描述。
country
- ISO 3166α2国家代码或UN M.49 numeric-3地区代码。看到
Locale
类描述关于有效的国家价值观。
NullPointerException
-如果任一参数为null,扔。
public Locale(String language)
注:
language
- ISO 639α或α-3语言代码,或一个子标记语言的最大长度为8个字符。看到
Locale
类有效的语言值描述。
NullPointerException
如果参数为null,扔。
public static Locale getDefault()
java虚拟机设置默认区域设置在启动基于主机环境。它被许多语言环境敏感的方法使用,如果没有显式指定区域设置。它可以用setDefault
方法改变。
public static Locale getDefault(Locale.Category category)
java虚拟机设置默认区域设置在启动基于主机环境。它被许多语言环境敏感的方法使用,如果没有显式指定区域设置。它可以用setdefault改变(locale.category、现场)的方法。
category
-指定类别得到默认的区域设置
NullPointerException
--如果类是空的
setDefault(Locale.Category, Locale)
public static void setDefault(Locale newLocale)
如果存在安全管理器,它的checkPermission
方法被调用之前的默认区域设置了PropertyPermission("user.language", "write")
许可。
java虚拟机设置默认区域设置在启动基于主机环境。它被许多语言环境敏感的方法使用,如果没有显式指定区域设置。
由于更改默认区域设置可能会影响功能的许多不同的领域,这种方法只是如果来访者准备把现场敏感的代码运行相同的java虚拟机中的应用。
采用这种方法设置的默认区域,所有的默认区域设置为每个类别也设置为指定的默认区域设置。
newLocale
-新的默认设置
SecurityException
-如果存在一个安全管理及其
checkPermission
方法不允许操作。
NullPointerException
-如果
newLocale
是空的
SecurityManager.checkPermission(java.security.Permission)
,
PropertyPermission
public static void setDefault(Locale.Category category, Locale newLocale)
如果存在安全管理器,它是一个propertypermission checkPermission方法称为(“用户语言”,“写”)之前的默认区域变更许可。
java虚拟机设置默认区域设置在启动基于主机环境。它被许多语言环境敏感的方法使用,如果没有显式指定区域设置。
由于更改默认区域设置可能会影响功能的许多不同的领域,这种方法只是如果来访者准备把现场敏感的代码运行相同的java虚拟机中的应用。
category
-指定类别设置默认区域设置
newLocale
-新的默认设置
SecurityException
-如果存在一个安全管理及其checkPermission方法不允许操作。
NullPointerException
--如果类别和/或newlocale是空的
SecurityManager.checkPermission(java.security.Permission)
,
PropertyPermission
,
getDefault(Locale.Category)
public static Locale[] getAvailableLocales()
public static String[] getISOCountries()
注:的Locale
类还支持其他国家(地区)代码,如填写数字UN M.49区号。因此,该方法返回的列表不包含所有有效的代码,可以用来制造场所。
public static String[] getISOLanguages()
注:
Locale
类还支持语言代码的最大长度为8个字符。因此,该方法返回的列表不包含所有有效的代码,可以用来制造场所。public String getLanguage()
注: ISO 639不是一个稳定的标准,一些语言的代码已经改变了。区域设置的构造函数将新的和旧的代码识别为代码已更改的语言的两个新的和旧的代码,但这个函数总是返回旧的代码。如果你想检查一个特定的语言,其代码已更改,不要做
如果(现场。getlanguage()。等于(“他”))/坏!…相反,做
如果(现场。getlanguage()。等于(新的区域(“他”)。getlanguage()))…
getDisplayLanguage()
public String getScript()
getDisplayScript()
public String getCountry()
getDisplayCountry()
public String getVariant()
getDisplayVariant()
public boolean hasExtensions()
Locale
true
public Locale stripExtensions()
Locale
,或
this
如果
this
没有扩展
public String getExtension(char key)
[0-9A-Za-z]
。键是不区分大小写的,所以例如“Z”和“Z”表示相同的扩展名。
key
扩展-关键
IllegalArgumentException
如果关键是形成不好
PRIVATE_USE_EXTENSION
,
UNICODE_LOCALE_EXTENSION
public Set<Character> getExtensionKeys()
public Set<String> getUnicodeLocaleAttributes()
public String getUnicodeLocaleType(String key)
key
- Unicode的重点区域
IllegalArgumentException
如果关键是形成不好
NullPointerException
-如果
key
是空的
public Set<String> getUnicodeLocaleKeys()
public final String toString()
Locale
返回对象的字符串表示,包括语言、国家、变体、脚本和扩展如下:
language + "_" + country + "_" + (variant + "_#" | "#") + script + "-" + extensions语言总是较低的情况下,国家总是大写,脚本是总冠军的情况下,和扩展总是小写。扩展和私人使用子标签将在规范秩序的解释
toLanguageTag()
。
当现场没有剧本也没有扩展,结果是一样的java 6之前。
如果语言和字段字段都丢失,这个函数将返回空字符串,即使变量,脚本或扩展字段是存在的(你不能有一个变种,变种必须伴随一个良好的语言或国家代码)。
如果脚本或扩展和变异缺失,没有强调前加“#”。
这种行为的目的是支持调试和与toString
预期国家语言,以前使用兼容,和不同的领域。代表一个区域作为一个交换的目的字符串,使用toLanguageTag()
。
实例:
toString
方法重写,继承类
Object
getDisplayName()
,
toLanguageTag()
public String toLanguageTag()
如果这Locale
具有语言、国家、或变异,不符合IETF BCP 47语言标签的要求,该方法处理这些领域如下所述:
Language:如果语言是空的,或不well-formed(例如“a”或“E2”),它会发出“和”(待定)。
国:如果国家不well-formed(例如“12”或“美国”),它将被忽略。
变体:如果变是 well-formed,每个子段(划定的“-”或“_”)发出一个子标记。否则:
[0-9a-zA-Z]{1,8}
(例如“赢”或“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语言代码,兼容性。此方法执行以下转换:
注:虽然这种方法生成的语言标签,以及形成(满足由IETF的BCP 47规范中定义的语法要求),它不一定是一个有效的BCP 47语言标记。例如,
新的区域(“XX”、“YY”)。tolanguagetag();将返回“XX YY”,但语言个子标记“XX”和“YY”区域个子标记无效,因为他们不在IANA注册个子标记语言。
forLanguageTag(String)
public static Locale forLanguageTag(String languageTag)
如果指定的语言标签包含任何病形成的子标签,第一个子标记及以下的子标签被忽略。比较Locale.Builder.setLanguageTag(java.lang.String)
抛出例外。
以下转换进行:
现场位置;LOC =现场。forlanguagetag(“en-us-x-lvariant-posix”);LOC。getvariant();//返回“POSIX”LOC。getextension(x);//返回nullLOC =现场。forlanguagetag(“de-posix-x-urp-lvariant-abc-def”);LOC。getvariant();//返回“posix_abc_def”LOC。getextension(x);//返回“URP”个子标记被丢弃
现场。forlanguagetag(“AR AAO”)。getlanguage();//返回“模板”现场。forlanguagetag(“恩ABC DEF我们”)。tostring();//返回“abc_us”
现场。forlanguagetag(“ja-jp-x-lvariant-jp”)。tolanguagetag();/ /返回”ja-jp-u-ca-japanese-x-lvariant-jp”现场。forlanguagetag(“th-th-x-lvariant-th”)。tolanguagetag();/ /返回”th-th-u-nu-thai-x-lvariant-th”
这实现了bcp47 '语言标签的生产,所以支持保护(规则)以及私人使用的标记语言。独立的私人使用标签为空的语言扩展的x-whatever ',和祖父的标签转换为规范的替代品,它们的存在。
祖父的标签与正则替换如下:
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 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语言个子标记注册(搜索“类型:保护”)。
注:没有保证toLanguageTag
和forLanguageTag
将往返。
languageTag
-语言标记
null
languageTag
NullPointerException
toLanguageTag()
,
Locale.Builder.setLanguageTag(String)
public String getISO3Language() throws MissingResourceException
MissingResourceException
扑missingresourceexception如果三字母语言的缩写是不适用于此区域。
public String getISO3Country() throws MissingResourceException
ISO 3166-1代码可以发现在线。
MissingResourceException
扑missingresourceexception如果三封国的缩写是不适用于此区域。
public final String getDisplayLanguage()
DISPLAY
现场定位。例如,如果现场是fr_fr和默认的
DISPLAY
现场en_us,getdisplaylanguage()将返回“法国”;如果现场是en_us和默认的
DISPLAY
现场fr_fr,getdisplaylanguage()会回来的”“”。如果返回的名称不能为默认
DISPLAY
现场定位,(也就是说,我们没有对克罗地亚一个日本名字),这个功能依靠的英文名称,并采用ISO代码作为最后手段的价值。如果区域设置没有指定语言,此函数将返回空字符串。
public String getDisplayLanguage(Locale inLocale)
inLocale
-其检索显示语言设置。
null
inLocale
NullPointerException
public String getDisplayScript()
DISPLAY
现场定位。如果此区域设置没有指定脚本代码,将返回空字符串。
DISPLAY
现场脚本代码的显示名称
public String getDisplayScript(Locale inLocale)
inLocale
-其检索显示脚本的现场。
DISPLAY
现场脚本代码的显示名称
null
inLocale
NullPointerException
public final String getDisplayCountry()
DISPLAY
现场定位。例如,如果现场是fr_fr和默认的
DISPLAY
现场en_us,getdisplaycountry()将返回“法国”;如果现场是en_us和默认的
DISPLAY
现场fr_fr,getdisplaycountry()将返回“该紫光”。如果返回的名称不能为默认
DISPLAY
现场定位,(也就是说,我们没有克罗地亚的日本名字),这个功能依靠的英文名称,并采用ISO代码作为最后手段的价值。如果区域设置没有指定一个国家,此函数将返回空字符串。
public String getDisplayCountry(Locale inLocale)
inLocale
-其检索显示国家的现场。
null
inLocale
NullPointerException
public final String getDisplayVariant()
DISPLAY
现场定位。如果区域设置没有指定一个变体代码,此函数将返回空字符串。
public String getDisplayVariant(Locale inLocale)
inLocale
-其检索显示不同编码区域。
null
inLocale
NullPointerException
public final String getDisplayName()
language (script, country, variant)取决于字段在指定区域设置。如果语言、脚本、国家和不同的字段都是空的,这个函数将返回空字符串。
language (country)
language (variant)
script (country)
country
public String getDisplayName(Locale inLocale)
language (script, country, variant)取决于字段在指定区域设置。如果语言、脚本、国家和不同的字段都是空的,这个函数将返回空字符串。
language (country)
language (variant)
script (country)
country
inLocale
-要检索其显示名称现场。
null
inLocale
NullPointerException
public int hashCode()
hashCode
方法重写,继承类
Object
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)
public boolean equals(Object obj)
equals
方法重写,继承类
Object
obj
-参考对象的比较。
Object.hashCode()
,
HashMap
public static List<Locale> filter(List<Locale.LanguageRange> priorityList, Collection<Locale> locales, Locale.FilteringMode mode)
Locale
实例。
priorityList
用户的语言优先级列表中的每个语言标签的排序依次为基于优先级或重量
locales
-
Locale
实例匹配使用
mode
过滤模式
Locale
实例列表,或一个空的列表,如果没有比赛。列表是可变的。
NullPointerException
-如果
priorityList
或
locales
是
null
IllegalArgumentException
-如果有一个或多个扩展语言范围包括在给定列表中指定当
Locale.FilteringMode.REJECT_EXTENDED_RANGES
public static List<Locale> filter(List<Locale.LanguageRange> priorityList, Collection<Locale> locales)
Locale
实例。这相当于
filter(List, Collection, FilteringMode)
当
mode
是
Locale.FilteringMode.AUTOSELECT_FILTERING
。
priorityList
用户的语言优先级列表中的每个语言标签的排序依次为基于优先级或重量
locales
-
Locale
实例匹配使用
Locale
实例列表,或一个空的列表,如果没有比赛。列表是可变的。
NullPointerException
-如果
priorityList
或
locales
是
null
public static List<String> filterTags(List<Locale.LanguageRange> priorityList, Collection<String> tags, Locale.FilteringMode mode)
priorityList
用户的语言优先级列表中的每个语言标签的排序依次为基于优先级或重量
tags
语言标签
mode
过滤模式
NullPointerException
-如果
priorityList
或
tags
是
null
IllegalArgumentException
-如果有一个或多个扩展语言范围包括在给定列表中指定当
Locale.FilteringMode.REJECT_EXTENDED_RANGES
public static List<String> filterTags(List<Locale.LanguageRange> priorityList, Collection<String> tags)
filterTags(List, Collection, FilteringMode)
mode
是当
Locale.FilteringMode.AUTOSELECT_FILTERING
。
priorityList
用户的语言优先级列表中的每个语言标签的排序依次为基于优先级或重量
tags
语言标签
NullPointerException
-如果
priorityList
或
tags
是
null
public static Locale lookup(List<Locale.LanguageRange> priorityList, Collection<Locale> locales)
Locale
实例。
priorityList
用户的语言优先级列表中的每个语言标签的排序依次为基于优先级或重量
locales
-
Locale
实例匹配使用
Locale
实例选择基于优先级或重量,或
null
如果没有比赛。
NullPointerException
-如果
priorityList
或
tags
是
null
public static String lookupTag(List<Locale.LanguageRange> priorityList, Collection<String> tags)
priorityList
用户的语言优先级列表中的每个语言标签的排序依次为基于优先级或重量
tags
语言唐匹配使用
null
如果没有比赛。
NullPointerException
-如果
priorityList
或
tags
是
null
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.