android中类 Locale的使用

对象 Locale 代表特定的地理、政治和文化地区,用于语言环境敏感的操作,如根据用户地区定制信息。本文介绍了如何创建 Locale 对象,使用 ISO 国家/地区代码,并提供了常用语言环境的常量。此外,还讨论了查询 Locale 信息的方法,如获取 ISO 代码、显示名称以及如何在 Java 平台上执行语言环境敏感的操作。
摘要由CSDN通过智能技术生成
Serializable, Cloneable
public final class Locale
    
    
     
     extends 
     
     Object
    
    
    
    
     
     implements 
     
     Cloneable, 
     
     Serializable
    
    
 
 

Locale 对象表示了特定的地理、政治和文化地区。需要 Locale 来执行其任务的操作称为语言环境敏感的 操作,它使用 Locale 为用户量身定制信息。例如,显示一个数值就是语言环境敏感的操作,应该根据用户的国家、地区或文化的风俗/传统来格式化该数值。

使用此类中的构造方法来创建 Locale

 Locale(String language)
 Locale(String language, String country)
 Locale(String language, String country, String variant)
 
语言参数是一个有效的 ISO 语言代码。这些代码是由 ISO-639 定义的小写两字母代码。在许多网站上都可以找到这些代码的完整列表,如:
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 LocaleCANADA
          用于表示国家/地区的有用常量。
static LocaleCANADA_FRENCH
          用于表示国家/地区的有用常量。
static LocaleCHINA
          用于表示国家/地区的有用常量。
static LocaleCHINESE
          用于表示语言的有用常量。
static LocaleENGLISH
          用于表示语言的有用常量。
static LocaleFRANCE
          用于表示国家/地区的有用常量。
static LocaleFRENCH
          用于表示语言的有用常量。
static LocaleGERMAN
          用于表示语言的有用常量。
static LocaleGERMANY
          用于表示国家/地区的有用常量。
static LocaleITALIAN
          用于表示语言的有用常量。
static LocaleITALY
          用于表示国家/地区的有用常量。
static LocaleJAPAN
          用于表示国家/地区的有用常量。
static LocaleJAPANESE
          用于表示语言的有用常量。
static LocaleKOREA
          用于表示国家/地区的有用常量。
static LocaleKOREAN
          用于表示语言的有用常量。
static LocalePRC
          用于表示国家/地区的有用常量。
static LocaleROOT
          用于表示根语言环境的有用常量。
static LocaleSIMPLIFIED_CHINESE
          用于表示语言的有用常量。
static LocaleTAIWAN
          用于表示国家/地区的有用常量。
static LocaleTRADITIONAL_CHINESE
          用于表示语言的有用常量。
static LocaleUK
          用于表示国家/地区的有用常量。
static LocaleUS
          用于表示国家/地区的有用常量。
 
构造方法摘要
Locale(String language)
          根据语言代码构造一个语言环境。
Locale(String language, String country)
          根据语言和国家/地区构造一个语言环境。
Locale(String language, String country, String variant)
          根据语言、国家/地区和变量构造一个语言环境。
 
方法摘要
Objectclone()
          重写 Cloneable。
booleanequals(Object obj)
          如果该 Locale 等于另一个对象,则返回 true。
static Locale[]getAvailableLocales()
          返回所有已安装语言环境的数组。
StringgetCountry()
          返回此语言环境的国家/地区代码,将为空字符串或大写的 ISO 3166 两字母代码。
static LocalegetDefault()
          获得此 Java 虚拟机实例的当前默认语言环境值。
StringgetDisplayCountry()
          返回适合向用户显示的语言环境国家/地区名。
StringgetDisplayCountry(Locale inLocale)
          返回适合向用户显示的语言环境国家/地区名。
StringgetDisplayLanguage()
          返回适合向用户显示的语言环境语言名。
StringgetDisplayLanguage(Locale inLocale)
          返回适合向用户显示的语言环境语言名。
StringgetDisplayName()
          返回适合向用户显示的语言环境名。
StringgetDisplayName(Locale inLocale)
          返回适合向用户显示的语言环境名。
StringgetDisplayVariant()
          返回适合向用户显示的语言环境变量代码名。
StringgetDisplayVariant(Locale inLocale)
          返回适合向用户显示的语言环境变量代码名。
StringgetISO3Country()
          返回此语言环境国家/地区的三字母缩写。
StringgetISO3Language()
          返回此语言环境语言的三字母缩写。
static String[]getISOCountries()
          返回 ISO 3166 中所定义的所有两字母国家/地区代码。
static String[]getISOLanguages()
          返回 ISO 639 中所定义的所有两字母语言代码。
StringgetLanguage()
          返回此语言环境的语言代码,可以是空字符串或小写的 ISO 639 代码。
StringgetVariant()
          返回此语言环境的变量代码。
inthashCode()
          重写 hashCode。
static voidsetDefault(Locale newLocale)
          为此 Java 虚拟机实例设置默认语言环境。
StringtoString()
          使用由下划线分隔的语言、国家/地区和变量来获取整个语言环境的编程名称。
从类 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.USLocale 实例。

返回:
已安装语言环境的数组。

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, do
 if (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"。

覆盖:
Object 中的 toString
返回:
该对象的字符串表示形式。
另请参见:
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 - 如果 inLocalenull

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 - 如果 inLocalenull

getDisplayVariant

public final String getDisplayVariant()
返回适合向用户显示的语言环境变量代码名。如有可能,将为默认的语言环境对返回的名称进行本地化。如果该语言环境未指定变量代码,则此功能返回空字符串。


getDisplayVariant

public String getDisplayVariant(Locale inLocale)
返回适合向用户显示的语言环境变量代码名。如有可能,将根据 inLocale 对名称进行本地化。如果该语言环境未指定变量代码,则此功能返回空字符串。

抛出:
NullPointerException - 如果 inLocalenull

getDisplayName

public final String getDisplayName()
返回适合向用户显示的语言环境名。这将把 getDisplayLanguage()、getDisplayCountry() 和 getDisplayVariant() 返回的值组合到单个字符串中。显示的名称具有下列形式之一:

语言(国家/地区,变量)

语言(国家/地区)

语言(变量)

国家/地区(变量)

语言

国家/地区

变量

这取决于语言环境中指定了哪些字段。如果语言、国家/地区和变量字段都为空,则该功能将返回空字符串。


getDisplayName

public String getDisplayName(Locale inLocale)
返回适合向用户显示的语言环境名。这将把 getDisplayLanguage()、getDisplayCountry() 和 getDisplayVariant() 返回的值组合到单个字符串中。显示的名称具有下列形式之一:

语言(国家/地区,变量)

语言(国家/地区)

语言(变量)

国家/地区(变量)

语言

国家/地区

变量

这取决于语言环境中指定了哪些字段。如果语言、国家/地区和变量字段都为空,则该功能将返回空字符串。

抛出:
NullPointerException - 如果 inLocalenull

clone

public Object clone()
重写 Cloneable。

覆盖:
Object 中的 clone
返回:
此实例的一个副本。
另请参见:
Cloneable

hashCode

public int hashCode()
重写 hashCode。由于 Locale 经常用于哈希表中,所以缓存该值可提高速度。

覆盖:
Object 中的 hashCode
返回:
此对象的一个哈希码值。
另请参见:
Object.equals(java.lang.Object), Hashtable

equals

public boolean equals(Object obj)
如果该 Locale 等于另一个对象,则返回 true。一个 Locale 与另一个 Locale 具有相同的语言、国家/地区和变量时,则认为它们相等;并与所有其他对象都不相等。

覆盖:
Object 中的 equals
参数:
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";
		}


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值