public final class Locale extends Object implements Cloneable, Serializable
Locale
对象表示了特定的地理、政治和文化地区。需要 Locale
来执行其任务的操作称为语言环境敏感的 操作,它使用 Locale
为用户量身定制信息。例如,显示一个数值就是语言环境敏感的操作,应该根据用户的国家、地区或文化的风俗/传统来格式化该数值。
使用此类中的构造方法来创建 Locale
:
语言参数是一个有效的 ISO 语言代码。这些代码是由 ISO-639 定义的小写两字母代码。在许多网站上都可以找到这些代码的完整列表,如:Locale(String language) Locale(String language, String country) Locale(String language, String country, String variant)
http://www.loc.gov/standards/iso639-2/englangn.html。
国家/地区参数是一个有效的 ISO 国家/地区代码。这些代码是由 ISO-3166 定义的大写两字母代码。在许多网站上都可以找到这些代码的完整列表,如:
http://www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html。
变量参数是特定于供应商或浏览器的代码。例如,用 WIN 代表 Windows、MAC 代表 Macintosh 和 POSIX 代表 POSIX。有两个变量时,把它们用下划线区分开来,把最重要的放在前面。例如,一个传统的西班牙排序规则可能用下列语言、国家/地区和变量参数来构造一个语言环境:"es"、"ES"、"Traditional_WIN"。
因为一个 Locale
对象就是一个地区的标识符,所以构造一个 Locale
时不执行有效性检查。如果想了解特定的资源在您构造的 Locale
中是否可用,则必须查询那些资源。例如,使用 getAvailableLocales
方法询问 NumberFormat
所支持的语言环境。
注:查询一个特定语言环境的资源时,得到的是最佳的可用匹配,没必要精确地按要求提供资源。有关更多信息,请参见 ResourceBundle
。
Locale
类提供了一些方便的常量,可用这些常量为常用的语言环境创建 Locale
对象。例如,下面的内容为美国创建了一个 Locale
对象:
Locale.US
创建完 Locale
后,就可以查询有关其自身的信息。使用 getCountry
可获取 ISO 国家/地区代码,使用 getLanguage
则获取 ISO 语言代码。可用使用 getDisplayCountry
来获取适合向用户显示的国家/地区名。同样,可用使用 getDisplayLanguage
来获取适合向用户显示的语言名。有趣的是,getDisplayXXX
方法本身是语言环境敏感的,它有两个版本:一个使用默认的语言环境作为参数,另一个则使用指定的语言环境作为参数。
Java 平台提供了多个可执行语言环境敏感操作的类:例如,NumberFormat
类以语言环境敏感的方式格式化数值、货币或百分比。像 NumberFormat
这样的类则有多种创建该类型默认对象的便捷方法。例如,NumberFormat
类提供了三个便捷的方法,用于创建默认的 NumberFormat
对象:
这些方法有两个变量;一个有明确的语言环境而另一个则没有;后者使用默认语言环境。NumberFormat.getInstance() NumberFormat.getCurrencyInstance() NumberFormat.getPercentInstance()
NumberFormat.getInstance(myLocale) NumberFormat.getCurrencyInstance(myLocale) NumberFormat.getPercentInstance(myLocale)
Locale
是一种标识所要获取的对象种类 (
NumberFormat
) 的机制。但 locale
只是一种标识对象的机制,
不是对象本身的容器。
-
从以下版本开始:
- 1.1 另请参见:
-
ResourceBundle
,Format
,NumberFormat
,Collator
, 序列化表格
字段摘要 | |
---|---|
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 Locale | ROOT 用于表示根语言环境的有用常量。 |
static Locale | SIMPLIFIED_CHINESE 用于表示语言的有用常量。 |
static Locale | TAIWAN 用于表示国家/地区的有用常量。 |
static Locale | TRADITIONAL_CHINESE 用于表示语言的有用常量。 |
static Locale | UK 用于表示国家/地区的有用常量。 |
static Locale | US 用于表示国家/地区的有用常量。 |
构造方法摘要 | |
---|---|
Locale(String language) 根据语言代码构造一个语言环境。 | |
Locale(String language, String country) 根据语言和国家/地区构造一个语言环境。 | |
Locale(String language, String country, String variant) 根据语言、国家/地区和变量构造一个语言环境。 |
方法摘要 | |
---|---|
Object | clone() 重写 Cloneable。 |
boolean | equals(Object obj) 如果该 Locale 等于另一个对象,则返回 true。 |
static Locale[] | getAvailableLocales() 返回所有已安装语言环境的数组。 |
String | getCountry() 返回此语言环境的国家/地区代码,将为空字符串或大写的 ISO 3166 两字母代码。 |
static Locale | getDefault() 获得此 Java 虚拟机实例的当前默认语言环境值。 |
String | getDisplayCountry() 返回适合向用户显示的语言环境国家/地区名。 |
String | getDisplayCountry(Locale inLocale) 返回适合向用户显示的语言环境国家/地区名。 |
String | getDisplayLanguage() 返回适合向用户显示的语言环境语言名。 |
String | getDisplayLanguage(Locale inLocale) 返回适合向用户显示的语言环境语言名。 |
String | getDisplayName() 返回适合向用户显示的语言环境名。 |
String | getDisplayName(Locale inLocale) 返回适合向用户显示的语言环境名。 |
String | getDisplayVariant() 返回适合向用户显示的语言环境变量代码名。 |
String | getDisplayVariant(Locale inLocale) 返回适合向用户显示的语言环境变量代码名。 |
String | getISO3Country() 返回此语言环境国家/地区的三字母缩写。 |
String | getISO3Language() 返回此语言环境语言的三字母缩写。 |
static String[] | getISOCountries() 返回 ISO 3166 中所定义的所有两字母国家/地区代码。 |
static String[] | getISOLanguages() 返回 ISO 639 中所定义的所有两字母语言代码。 |
String | getLanguage() 返回此语言环境的语言代码,可以是空字符串或小写的 ISO 639 代码。 |
String | getVariant() 返回此语言环境的变量代码。 |
int | hashCode() 重写 hashCode。 |
static void | setDefault(Locale newLocale) 为此 Java 虚拟机实例设置默认语言环境。 |
String | toString() 使用由下划线分隔的语言、国家/地区和变量来获取整个语言环境的编程名称。 |
从类 java.lang.Object 继承的方法 |
---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
字段详细信息 |
---|
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
构造方法详细信息 |
---|
Locale
public Locale(String language, String country, String variant)
-
根据语言、国家/地区和变量构造一个语言环境。注:ISO 639 并非是一个不变的标准;它所定义的某些语言代码(特别是 iw、ji 和 in)已经发生了变化。此构造方法接受旧代码(iw、ji 和 in)和新代码(he、yi 和 id),但是 Locale 中的所有其他 API 将只返回旧代码。
-
参数:
-
language
- 小写的两字母 ISO-639 代码。 -
country
- 大写的两字母 ISO-3166 代码。 -
variant
- 特定于供应商和浏览器的代码。参见类描述。
抛出:
-
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 代码。 -
country
- 大写的两字母 ISO-3166 代码。
抛出:
-
NullPointerException
- 如果任意参数为 null。
-
Locale
public Locale(String language)
-
根据语言代码构造一个语言环境。注:ISO 639 并非是一个不变的标准;它所定义的某些语言代码(特别是 iw、ji 和 in)已经发生了变化。此构造方法接受旧代码(iw、ji 和 in)和新代码(he、yi 和 id),但是 Locale 中的所有其他 API 将只返回旧代码。
-
参数:
-
language
- 小写的两字母 ISO-639 代码。
抛出:
-
NullPointerException
- 如果参数为 null。
从以下版本开始:
- 1.4
-
方法详细信息 |
---|
getDefault
public static Locale getDefault()
-
获得此 Java 虚拟机实例的当前默认语言环境值。
Java 虚拟机根据主机的环境在启动期间设置默认语言环境。如果没有明确地指定语言环境,则很多语言环境敏感的方法都使用该方法。可使用
setDefault
方法更改该值。 -
-
-
返回:
- 此 Java 虚拟机实例的默认语言环境。
setDefault
public static void setDefault(Locale newLocale)
-
为此 Java 虚拟机实例设置默认语言环境。这不会影响主机的语言环境。
如果有安全管理器,则在更改默认语言环境前使用
PropertyPermission("user.language", "write")
权限调用其checkPermission
方法。Java 虚拟机根据主机的环境在启动期间设置默认语言环境。如果没有明确地指定语言环境,则很多语言环境敏感的方法都使用该方法。
由于更改默认的语言环境可能影响功能的很多方面,所以应该仅在调用者准备重新初始化在同一 Java 虚拟机内所运行的语言环境敏感代码时才使用此方法。
-
-
-
参数:
-
newLocale
- 新的默认语言环境。
抛出:
-
SecurityException
- 如果安全管理器存在并且其checkPermission
方法不允许该操作。 -
NullPointerException
- 如果newLocale
为 null。
另请参见:
-
SecurityManager.checkPermission(java.security.Permission)
,PropertyPermission
-
getAvailableLocales
public static Locale[] getAvailableLocales()
-
返回所有已安装语言环境的数组。 返回的数组表示由 Java 运行时环境和已安装的
LocaleServiceProvider
所支持的语言环境的联合。它必须至少包含一个等于Locale.US
的Locale
实例。 -
-
-
返回:
- 已安装语言环境的数组。
getISOCountries
public static String[] getISOCountries()
- 返回 ISO 3166 中所定义的所有两字母国家/地区代码。可用于创建 Locale。
-
-
getISOLanguages
public static String[] getISOLanguages()
- 返回 ISO 639 中所定义的所有两字母语言代码。可用于创建 Locale。[注:ISO 639 并非是一个不变的标准,某些语言代码已经改变。此功能所返回的列表包括了代码已改变的语言的新代码和旧代码。]
-
-
getLanguage
public String getLanguage()
-
返回此语言环境的语言代码,可以是空字符串或小写的 ISO 639 代码。
注:ISO 639 并非是一个不变的标准,某些语言代码已经改变。Locale 的构造方法可识别代码已改变的语言的新代码和旧代码,但是此功能总是返回旧代码。如果想检查代码已改变的特定语言,不要执行
if (locale.getLanguage().equals("he")) ...
Instead, doif (locale.getLanguage().equals(new Locale("he", "", "").getLanguage())) ...
-
-
-
另请参见:
-
getDisplayLanguage()
-
getCountry
public String getCountry()
- 返回此语言环境的国家/地区代码,将为空字符串或大写的 ISO 3166 两字母代码。
-
-
-
另请参见:
-
getDisplayCountry()
-
getVariant
public String getVariant()
- 返回此语言环境的变量代码。
-
-
-
另请参见:
-
getDisplayVariant()
-
toString
public final String toString()
- 使用由下划线分隔的语言、国家/地区和变量来获取整个语言环境的编程名称。语言总是小写,国家/地区总是大写。如果没有语言,则字符串用一个下划线开头。如果语言和国家/地区字段都丢失了,则此功能将返回空字符串,即使变量字段中填有内容也如此(不能只用变量来创建一个语言环境,变量必须随附在有效的语言或国家/地区代码上)。示例:"en"、"de_DE"、"_GB"、"en_US_WIN"、"de__POSIX"、"fr__MAC"。
-
-
返回:
- 该对象的字符串表示形式。 另请参见:
-
getDisplayName()
getISO3Language
public String getISO3Language() throws MissingResourceException
-
返回此语言环境语言的三字母缩写。如果此语言环境未指定语言,那么这将是一个空字符串。否则,将返回小写的 ISO 639-2/T 语言代码。可在
http://www.loc.gov/standards/iso639-2/englangn.html
. 找到 ISO 639-2 语言代码。 -
-
-
抛出:
-
MissingResourceException
- 如果三字母语言缩写不可用于此语言环境,则抛出 MissingResourceException。
-
getISO3Country
public String getISO3Country() throws MissingResourceException
-
返回此语言环境国家/地区的三字母缩写。如果此语言环境未指定国家/地区,那么这将是一个空字符串。否则将返回大写的 ISO 3166 三字母国家/地区代码。可在
http://www.davros.org/misc/iso3166.txt
. 找到 ISO 3166-2 国家/地区代码。 -
-
-
抛出:
-
MissingResourceException
- 如果三字母国家/地区缩写不可用于此语言环境,则抛出 MissingResourceException。
-
getDisplayLanguage
public final String getDisplayLanguage()
- 返回适合向用户显示的语言环境语言名。如有可能,将为默认的语言环境对返回的名称进行本地化。例如,如果语言环境是 fr_FR 并且默认的语言环境是 en_US,则 getDisplayLanguage() 将返回 "French";如果语言环境是 en_US 并且默认的语言环境是 fr_FR,则 getDisplayLanguage() 将返回 "anglais"。如果无法为默认的语言环境本地化返回的名称(比方说没有 Croatian 的日本名称),则该功能将依赖英文名,并使用 ISO 代码作为最终的值。如果该语言环境未指定语言,则此功能返回空字符串。
-
-
getDisplayLanguage
public String getDisplayLanguage(Locale inLocale)
- 返回适合向用户显示的语言环境语言名。如有可能,将根据 inLocale 对返回的名称进行本地化。例如,如果语言环境是 fr_FR 并且 inLocale 是 en_US,则 getDisplayLanguage() 将返回 "French";如果语言环境是 en_US 并且 inLocale 是 fr_FR,则 getDisplayLanguage() 将返回 "anglais"。如果无法根据 inLocale 对返回的名称进行本地化(比方说没有 Croatian 的日本名称),则该功能将依赖英文名,并使用 ISO 代码作为最终的值。如果该语言环境未指定语言,则此功能返回空字符串。
-
-
-
抛出:
-
NullPointerException
- 如果inLocale
为null
-
getDisplayCountry
public final String getDisplayCountry()
- 返回适合向用户显示的语言环境国家/地区名。如有可能,将为默认的语言环境对返回的名称进行本地化。例如,如果语言环境是 fr_FR 并且默认的语言环境是 en_US,则 getDisplayCountry() 将返回 "France";如果语言环境是 en_US 并且默认的语言环境是 fr_FR,则 getDisplayCountry() 将返回 "Etats-Unis"。如果无法为默认的语言环境本地化返回的名称(比方说没有 Croatia 的日本名称),则该功能将依赖英文名,并使用 ISO 代码作为最终的值。如果该语言环境未指定国家/地区,则此功能返回空字符串。
-
-
getDisplayCountry
public String getDisplayCountry(Locale inLocale)
- 返回适合向用户显示的语言环境国家/地区名。如有可能,将根据 inLocale 对返回的名称进行本地化。例如,如果语言环境是 fr_FR 并且 inLocale 是 en_US,则 getDisplayCountry() 将返回 "France";如果语言环境是 en_US 并且 inLocale 是 fr_FR,则 getDisplayCountry() 将返回 "Etats-Unis"。如果无法根据 inLocale 对返回的名称进行本地化(比方说没有 Croatia 的日本名称),则该功能将依赖英文名,并使用 ISO 代码作为最终的值。如果该语言环境未指定国家/地区,则此功能返回空字符串。
-
-
-
抛出:
-
NullPointerException
- 如果inLocale
为null
-
getDisplayVariant
public final String getDisplayVariant()
- 返回适合向用户显示的语言环境变量代码名。如有可能,将为默认的语言环境对返回的名称进行本地化。如果该语言环境未指定变量代码,则此功能返回空字符串。
-
-
getDisplayVariant
public String getDisplayVariant(Locale inLocale)
- 返回适合向用户显示的语言环境变量代码名。如有可能,将根据 inLocale 对名称进行本地化。如果该语言环境未指定变量代码,则此功能返回空字符串。
-
-
-
抛出:
-
NullPointerException
- 如果inLocale
为null
-
getDisplayName
public final String getDisplayName()
-
返回适合向用户显示的语言环境名。这将把 getDisplayLanguage()、getDisplayCountry() 和 getDisplayVariant() 返回的值组合到单个字符串中。显示的名称具有下列形式之一:
语言(国家/地区,变量)
这取决于语言环境中指定了哪些字段。如果语言、国家/地区和变量字段都为空,则该功能将返回空字符串。语言(国家/地区)
语言(变量)
国家/地区(变量)
语言
国家/地区
变量
-
-
getDisplayName
public String getDisplayName(Locale inLocale)
-
返回适合向用户显示的语言环境名。这将把 getDisplayLanguage()、getDisplayCountry() 和 getDisplayVariant() 返回的值组合到单个字符串中。显示的名称具有下列形式之一:
语言(国家/地区,变量)
这取决于语言环境中指定了哪些字段。如果语言、国家/地区和变量字段都为空,则该功能将返回空字符串。语言(国家/地区)
语言(变量)
国家/地区(变量)
语言
国家/地区
变量
-
-
-
抛出:
-
NullPointerException
- 如果inLocale
为null
-
clone
public Object clone()
hashCode
public int hashCode()
- 重写 hashCode。由于 Locale 经常用于哈希表中,所以缓存该值可提高速度。
-
-
返回:
- 此对象的一个哈希码值。 另请参见:
-
Object.equals(java.lang.Object)
,Hashtable
equals
public boolean equals(Object obj)
- 如果该 Locale 等于另一个对象,则返回 true。一个 Locale 与另一个 Locale 具有相同的语言、国家/地区和变量时,则认为它们相等;并与所有其他对象都不相等。
-
-
参数:
-
obj
- 要与之比较的引用对象。
返回:
- 如果此 Locale 等于指定的对象,则返回 true。 另请参见:
-
Object.hashCode()
,Hashtable
-
String language = Locale.getDefault().getLanguage();
if (language.equals("zh")) {
return "cn";
} else if (language.equals("en")) {
return "en";
} else {
return "en";
}