java.lang.Object
java.util.Locale
public final class Locale
extends Objectimplements Cloneable, Serializable
Locale
对象表示了特定的地理、政治和文化地区。需要 Locale
来执行其任务的操作称为语言环境敏感的 操作,它使用 Locale
为用户量身定制信息。例如,显示一个数值就是语言环境敏感的操作,应该根据用户的国家、地区或文化的风俗/传统来格式化该数值。
使用此类中的构造方法来创建 Locale
:
语言参数是一个有效的 ISO 语言代码。这些代码是由 ISO-639 定义的小写两字母代码。在许多网站上都可以找到这些代码的完整列表,如:Locale(String language) Locale(String language, String country) Locale(String language, String country, String variant)
国家/地区参数是一个有效的 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
只是一种标识对象的机制,
不是对象本身的容器。
字段摘要 | |
---|---|
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 |
字段详细信息 |
---|
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 Locale(String language,
String country,
String variant)
language
- 小写的两字母 ISO-639 代码。
country
- 大写的两字母 ISO-3166 代码。
variant
- 特定于供应商和浏览器的代码。参见类描述。
NullPointerException
- 如果任意参数为 null。
public Locale(String language,
String country)
language
- 小写的两字母 ISO-639 代码。
country
- 大写的两字母 ISO-3166 代码。
NullPointerException
- 如果任意参数为 null。
public Locale(String language)
language
- 小写的两字母 ISO-639 代码。
NullPointerException
- 如果参数为 null。
方法详细信息 |
---|
public static Locale getDefault()
Java 虚拟机根据主机的环境在启动期间设置默认语言环境。如果没有明确地指定语言环境,则很多语言环境敏感的方法都使用该方法。可使用 setDefault 方法更改该值。
public static void setDefault(Locale newLocale)
如果有安全管理器,则在更改默认语言环境前使用 PropertyPermission("user.language", "write")
权限调用其 checkPermission
方法。
Java 虚拟机根据主机的环境在启动期间设置默认语言环境。如果没有明确地指定语言环境,则很多语言环境敏感的方法都使用该方法。
由于更改默认的语言环境可能影响功能的很多方面,所以应该仅在调用者准备重新初始化在同一 Java 虚拟机内所运行的语言环境敏感代码时才使用此方法。
newLocale
- 新的默认语言环境。
SecurityException
- 如果安全管理器存在并且其
checkPermission
方法不允许该操作。
NullPointerException
- 如果
newLocale
为 null。
public static Locale[] getAvailableLocales()
Locale
实例。
public static String[] getISOCountries()
public static String[] getISOLanguages()
public String getLanguage()
注:ISO 639 并非是一个不变的标准,某些语言代码已经改变。Locale 的构造方法可识别代码已改变的语言的新代码和旧代码,但是此功能总是返回旧代码。如果想检查代码已改变的特定语言,不要执行
if (locale.getLanguage().equals("he")) ...Instead, do
if (locale.getLanguage().equals(new Locale("he", "", "").getLanguage())) ...
public String getCountry()
public String getVariant()
public final String toString()
Object
中的
toString
public String getISO3Language()
throws MissingResourceException
http://www.loc.gov/standards/iso639-2/englangn.html
. 找到 ISO 639-2 语言代码。
MissingResourceException
- 如果三字母语言缩写不可用于此语言环境,则抛出 MissingResourceException。
public String getISO3Country()
throws MissingResourceException
http://www.davros.org/misc/iso3166.txt
. 找到 ISO 3166-2 国家/地区代码。
MissingResourceException
- 如果三字母国家/地区缩写不可用于此语言环境,则抛出 MissingResourceException。
public final String getDisplayLanguage()
public String getDisplayLanguage(Locale inLocale)
NullPointerException
- 如果
inLocale
为
null
public final String getDisplayCountry()
public String getDisplayCountry(Locale inLocale)
NullPointerException
- 如果
inLocale
为
null
public final String getDisplayVariant()
public String getDisplayVariant(Locale inLocale)
NullPointerException
- 如果
inLocale
为
null
public final String getDisplayName()
语言(国家/地区,变量)这取决于语言环境中指定了哪些字段。如果语言、国家/地区和变量字段都为空,则该功能将返回空字符串。语言(国家/地区)
语言(变量)
国家/地区(变量)
语言
国家/地区
变量
public String getDisplayName(Locale inLocale)
语言(国家/地区,变量)这取决于语言环境中指定了哪些字段。如果语言、国家/地区和变量字段都为空,则该功能将返回空字符串。语言(国家/地区)
语言(变量)
国家/地区(变量)
语言
国家/地区
变量
NullPointerException
- 如果
inLocale
为
null
public Object clone()
Object
中的
clone
public int hashCode()
Object
中的
hashCode
public boolean equals(Object obj)
Object
中的
equals
obj
- 要与之比较的引用对象。