Locale 类

定义

对象 Locale 表示特定的地理、政治或文化区域。

[Android.Runtime.Register("java/util/Locale", DoNotGenerateAcw=true)]
public sealed class Locale : Java.Lang.Object, IDisposable, Java.Interop.IJavaPeerable, Java.IO.ISerializable, Java.Lang.ICloneable
[<Android.Runtime.Register("java/util/Locale", DoNotGenerateAcw=true)>]
type Locale = class
    inherit Object
    interface ISerializable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
    interface ICloneable
继承
Locale
属性
实现

注解

对象 Locale 表示特定的地理、政治或文化区域。 需要执行 Locale 其任务的操作称为 <em>区域设置敏感</em> ,并使用 Locale 用户定制信息。 例如,显示数字是区域设置敏感操作—应根据用户的本机国家/地区或文化的习俗和约定设置数字的格式。

Locale 类实现 IETF BCP 47,它由 RFC 4647“语言标记匹配”RFC 5646“标识语言的标记” 组成,支持 LDML(UTS#35、“Unicode 区域设置数据标记语言”)BCP 47 兼容的区域设置数据交换扩展。

从逻辑上讲,对象 Locale 由下面所述的字段组成。

<dl><dt>“def_language”><b>language</b></dt>

<dd>ISO 639 alpha-2 或 alpha-3 语言代码,或注册的语言子标记最多 8 个 alpha 字母(对于将来的增强)。 当语言同时具有 alpha-2 代码和 alpha-3 代码时,必须使用 alpha-2 代码。 可以在 IANA 语言子标记注册表中找到有效语言代码的完整列表(搜索“类型:语言”)。 语言字段不区分大小写,但 Locale 始终规范化为小写。</dd>

<dd>格式良好的语言值具有格式 [a-zA-Z]{2,8}。 请注意,这不是完整的 BCP47 语言生产,因为它不包括 extlang。 由于新式三字母语言代码替换了它们,因此不需要它们。</dd>

<dd>示例:“en”(英语)、“ja”(日语)、“kok”(Konkani)</dd>

<dt>“def_script”><b>script</b></dt>

<dd>ISO 15924 alpha-4 脚本代码。 可以在 IANA 语言子标记注册表中找到有效脚本代码的完整列表(搜索“类型:脚本”)。 脚本字段不区分大小写,但 Locale 始终规范为标题大小写(第一个字母为大写,其余字母为小写)。</dd>

<dd>格式正确的脚本值采用 /dd 格式[a-zA-Z]{4}<>

<dd>示例:“Latn”(拉丁语)、“Cyrl”(西里尔文)</dd>

<dt>“def_region”><b>country (region)</b></dt>

<dd>ISO 3166 alpha-2 国家/地区代码或 UN M.49 数字-3 区号。 可以在 IANA 语言子标记注册表中找到有效国家和地区代码的完整列表(搜索“类型:区域”)。 国家/地区字段不区分大小写,但 Locale 始终规范为大写。</dd>

<dd>格式良好的国家/地区值的格式为 [a-zA-Z]{2} | [0-9]{3}</dd>

<dd>示例:“US”(美国)、“FR”(法国)、“029”(加勒比)</dd>

<dt>“def_variant”><b>variant</b></dt>

<dd>用于指示变体的任何 Locale任意值。 如果每个变量值有两个或更多个指示其自己的语义,则这些值应按重要性排序,其中最重要的第一个值由下划线('_')分隔。 变体字段区分大小写。</dd>

<dd>注意:IETF BCP 47 将语法限制置于变体子标记上。 此外,BCP 47 子标记也严格用于指示定义语言或其方言的其他变体,这些变体不受语言、脚本和区域子标记的任何组合所涵盖。 可以在 IANA 语言子标记注册表中找到有效变体代码的完整列表(搜索“Type: variant”)。

但是,变量字段 Locale 以前用于任何类型的变体,而不仅仅是语言变体。 例如,Java SE 运行时环境中提供的一些受支持的变体表示其他区域性行为,例如日历类型或数字脚本。 在 BCP 47 中,此类信息不标识语言,受扩展子标记或专用使用子标记支持。</dd>

<dd>格式良好的变体值具有格式的窗体SUBTAG (('_'|'-') SUBTAG)*SUBTAG = [0-9][0-9a-zA-Z]{3} | [0-9a-zA-Z]{5,8} (注意:BCP 47 仅使用连字符('-')作为分隔符,这更加宽大。</dd>

<dd>示例:“polyton”(Polytonic Greek)、“POSIX”</dd>

<dt>“def_extensions”><b>extensions</b></dt>

<dd>A 映射从单个字符键映射到字符串值,指示扩展与语言标识分开。 实现 BCP 47 扩展子标记和私有使用子标记的语义和语法中的扩展 Locale 。 扩展不区分大小写,但 Locale 规范化所有扩展键和值以小写形式。 请注意,扩展不能有空值。</dd>

<dd>格式良好的键是集中 [0-9a-zA-Z]的单个字符。 格式正确的值具有键“xSUBTAG = [0-9a-zA-Z]{1,8}”和其他键SUBTAG = [0-9a-zA-Z]{2,8}(即“x”允许单字符子标记)的窗体SUBTAG ('-' SUBTAG)*。</dd>

<dd>示例:key=“u”/value=“ca-japanese” (日语日历), key=“x”/value=“java-1-7”</dd></dl>

<b>注意:</b> 尽管 BCP 47 要求在 IANA 语言子标记注册表中注册字段值,但 Locale 该类不提供任何验证功能。 Builder唯一检查单个字段是否满足语法要求(格式正确),但不验证值本身。 有关详细信息,请参阅Builder

<h2>“def_locale_extension”>Unicode 区域设置/语言扩展</h2>

UTS#35,“Unicode 区域设置数据标记语言”定义可选属性和关键字,以替代或优化与区域设置关联的默认行为。 关键字由一对键和类型表示。 例如,“nu-thai”表示应将泰国本地数字(值:“thai”)用于设置数字格式(键:“nu”)。

关键字使用扩展键“u#UNICODE_LOCALE_EXTENSION”()映射到 BCP 47 扩展值。 上面的示例“nu-thai”成为扩展“u-nu-thai”。

因此,当对象包含 Unicode 区域设置属性和关键字时 LocalegetExtension(UNICODE_LOCALE_EXTENSION) 将返回表示此信息的字符串,例如“nu-thai”。 该 Locale 类还提供 #getUnicodeLocaleAttributes#getUnicodeLocaleKeys并允许 #getUnicodeLocaleType 你直接访问 Unicode 区域设置属性和键/类型对。 当表示为字符串时,Unicode 区域设置扩展按字母顺序列出属性,后跟按字母顺序列出的键/类型序列(定义类型时,构成键类型的子标记的顺序是固定的)

格式正确的区域设置键具有格式 [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运行时环境中的实际区域设置敏感服务实现可能不支持任何特定的 Unicode 区域设置属性或键/类型对。

<h3>“ObtainingLocale”>获取区域设置</h3>

可通过多种方式获取 Locale 对象。

<h4>Builder</h4>

使用 Builder 可以构造 Locale 符合 BCP 47 语法的对象。

<h4>工厂方法</h4>

该方法 #forLanguageTag 获取 Locale 格式正确的 BCP 47 语言标记的对象。 该方法#of(String, String, String)及其重载从上述给定languagecountry和/或variant定义对象中获取Locale对象。

<h4>区域设置常量</h4>

Locale 类提供了许多方便的常量,可用于获取 Locale 常用区域设置的对象。 例如,Locale.USLocale美国的对象。

<h3>“LocaleMatching”>Locale Matching</h3>

如果应用程序或系统国际化并提供多个区域设置的本地化资源,则有时需要查找满足每个用户的特定首选项的一个或多个区域设置(或语言标记)。 请注意,此区域设置匹配文档中将术语“语言标记”与“区域设置”互换使用。

为了将用户的首选区域设置与一组语言标记匹配, RFC 4647 语言标记匹配 定义了两种机制:筛选和查找。 <em>筛选</em> 用于获取所有匹配的区域设置,而 <em>lookup</em> 用于选择最佳匹配区域设置。 匹配不区分大小写。 以下各节介绍了这些匹配机制。

用户的首选项称为 <em>Language Priority List</em> ,并表示为语言范围列表。 语法上有两种类型的语言范围:基本和扩展。 有关详细信息,请参阅Locale.LanguageRange Locale.LanguageRange

<h4>筛选</h4>

筛选操作返回所有匹配的语言标记。 它在 RFC 4647 中定义,如下所示:“在筛选中,每个语言范围表示最不具体的语言标记(即具有最少子标记的语言标记)是可接受的匹配项。 匹配的标记集中的所有语言标记将具有与语言范围相等或更大的子标记数。 语言范围中的每个非通配符子标记都将出现在每个匹配的语言标记中。

有两种类型的筛选:基本语言范围的筛选(称为“基本筛选”)和扩展语言范围的筛选(称为“扩展筛选”)。 它们可能会根据给定语言优先级列表中包含的语言范围类型返回不同的结果。 Locale.FilteringMode 是一个参数,用于指定应如何完成筛选。

<h4>Lookup</h4>

查找操作返回最佳匹配的语言标记。 它按如下方式在 RFC 4647 中定义:“与筛选相比,每个语言范围表示可接受的匹配项最具体的标记。 根据用户的优先级找到的第一个匹配标记被视为最接近的匹配项,并且是返回的项。

例如,如果语言优先级列表由两种语言范围组成, "zh-Hant-TW" 并且 "en-US"按优先顺序,查找方法会逐渐搜索下面的语言标记,以便查找最佳匹配的语言标记。 <blockquote>

1. zh-Hant-TW
               2. zh-Hant
               3. zh
               4. en-US
               5. en

</blockquote> 如果语言标记与上面的语言范围完全匹配,则返回语言标记。

"*" 是特殊语言范围,在查找中将被忽略。

如果多种语言标记与语言范围中包含的子标记 '*' 匹配,则由 Iterator 语言标记返回的第一个 Collection 匹配语言标记被视为最佳匹配标记。

<h3>区域设置</h3 的使用>

获取后 Locale ,可以查询它以获取有关自身的信息。 用于 getCountry 获取国家/地区代码和 getLanguage 获取语言代码。 可用于 getDisplayCountry 获取适合向用户显示的国家/地区的名称。 同样,你可以使用 getDisplayLanguage 该语言获取适合向用户显示的语言的名称。 有趣的是,这些 getDisplayXXX 方法本身区分区域设置,并具有两个版本:一个使用默认 Locale.Category#DISPLAY DISPLAY 区域设置,一个使用指定为参数的区域设置。

Java平台提供了许多执行区域设置敏感操作的类。 例如,类 NumberFormat 以区分区域设置的方式设置数字、货币和百分比的格式。 类(例如 NumberFormat ,有多个方便的方法用于创建该类型的默认对象)。 例如,该 NumberFormat 类提供了以下三种用于创建默认 NumberFormat 对象的便利方法:{

在 1.1 中添加。

Java文档java.util.Locale

本页的某些部分是根据 创建和共享的工作进行的修改,并根据 许可证中所述的条款使用。

构造函数

名称 说明
Locale(String, String, String)

从语言、国家/地区和变体构造区域设置。

Locale(String, String)

从语言和国家/地区构造区域设置。

Locale(String)

从语言代码构造区域设置。

字段

名称 说明
PrivateUseExtension

专用使用扩展('x')的密钥。

UnicodeLocaleExtension

Unicode 区域设置扩展('u')的键。

属性

名称 说明
Canada

适用于国家/地区的有用常量。

CanadaFrench

适用于国家/地区的有用常量。

China

适用于国家/地区的有用常量。

Chinese

语言的有用常量。

Class

返回此 Object的运行时类。

(继承自 Object)
Country

返回此区域设置的国家/地区代码,该区域设置应为空字符串、大写 ISO 3166 2 字母代码或 UN M。

Default

获取Java虚拟机实例的默认区域设置的当前值。 - 或 - 设置Java虚拟机实例的默认区域设置。

DisplayCountry

返回适合向用户显示的区域设置国家/地区的名称。

DisplayLanguage

返回适合向用户显示的区域设置语言的名称。

DisplayName

返回适合向用户显示的区域设置的名称。

DisplayScript

返回适合向用户显示的区域设置脚本的名称。

DisplayVariant

返回适合向用户显示的区域设置变体代码的名称。

English

语言的有用常量。

ExtensionKeys

返回与此区域设置关联的扩展键集;如果没有扩展,则返回空集。

France

适用于国家/地区的有用常量。

French

语言的有用常量。

German

语言的有用常量。

Germany

适用于国家/地区的有用常量。

Handle

基础 Android 实例的句柄。

(继承自 Object)
HasExtensions

如果具有Locale任何 ##def_extensions 扩展,则返回true

ISO3Country

返回此区域设置国家/地区的三字母缩写。

ISO3Language

返回此区域设置语言的三字母缩写。

Italian

语言的有用常量。

Italy

适用于国家/地区的有用常量。

Japan

适用于国家/地区的有用常量。

Japanese

语言的有用常量。

JniIdentityHashCode

对象 Locale 表示特定的地理、政治或文化区域。

(继承自 Object)
JniPeerMembers

对象 Locale 表示特定的地理、政治或文化区域。

Korea

适用于国家/地区的有用常量。

Korean

语言的有用常量。

Language

返回此区域设置的语言代码。

PeerReference

对象 Locale 表示特定的地理、政治或文化区域。

(继承自 Object)
Prc

适用于国家/地区的有用常量。

Root

根区域设置的有用常量。

Script

返回此区域设置的脚本,该脚本应为空字符串或 ISO 15924 4 字母脚本代码。

SimplifiedChinese

语言的有用常量。

Taiwan

适用于国家/地区的有用常量。

ThresholdClass

此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。

(继承自 Object)
ThresholdType

此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。

(继承自 Object)
TraditionalChinese

语言的有用常量。

Uk

适用于国家/地区的有用常量。

UnicodeLocaleAttributes

返回与此区域设置关联的 unicode 区域设置属性集;如果没有属性,则返回空集。

UnicodeLocaleKeys

返回此区域设置定义的 Unicode 区域设置键集;如果此区域设置没有,则返回空集。

Us

适用于国家/地区的有用常量。

Variant

返回此区域设置的变体代码。

方法

名称 说明
Clone()

重写可克隆。

Dispose()

对象 Locale 表示特定的地理、政治或文化区域。

(继承自 Object)
Dispose(Boolean)

对象 Locale 表示特定的地理、政治或文化区域。

(继承自 Object)
Equals(Object)

指示其他对象是否“等于”此对象。

(继承自 Object)
Filter(IList<Locale.LanguageRange>, ICollection<Locale>, Locale+FilteringMode)

使用 RFC 4647 中定义的筛选机制返回匹配 Locale 实例的列表。

Filter(IList<Locale.LanguageRange>, ICollection<Locale>)

使用 RFC 4647 中定义的筛选机制返回匹配 Locale 实例的列表。

FilterTags(IList<Locale.LanguageRange>, ICollection<String>, Locale+FilteringMode)

使用 RFC 4647 中定义的基本筛选机制返回匹配语言标记的列表。

FilterTags(IList<Locale.LanguageRange>, ICollection<String>)

使用 RFC 4647 中定义的基本筛选机制返回匹配语言标记的列表。

ForLanguageTag(String)

返回指定 IETF BCP 47 语言标记字符串的区域设置。

GetAvailableLocales()

返回所有已安装区域设置的数组。

GetDefault(Locale+Category)

获取Java虚拟机实例的默认区域设置的当前值。

GetDisplayCountry(Locale)

返回此区域设置的国家/地区的名称,本地化为 locale.

GetDisplayLanguage(Locale)

返回此区域设置语言的名称,本地化为 locale.

GetDisplayName(Locale)

返回本地化为 locale 的区域设置的语言名称、国家/地区名称和变体。

GetDisplayScript(Locale)

返回适合向用户显示的区域设置脚本的名称。

GetDisplayVariant(Locale)

返回适合向用户显示的区域设置变体代码的名称。

GetExtension(Char)

返回与指定键关联的扩展(或专用使用)值,如果没有与键关联的扩展,则返回 null。

GetHashCode()

返回对象的哈希代码值。

(继承自 Object)
GetISOCountries()

返回 ISO 3166 中定义的所有 2 个字母国家/地区代码的列表。

GetISOCountries(Locale+IsoCountryCode)

对象 Locale 表示特定的地理、政治或文化区域。

GetISOLanguages()

返回 ISO 639 中定义的所有 2 个字母语言代码和部分 3 个字母代码的列表。

GetUnicodeLocaleType(String)

返回与此区域设置的指定 Unicode 区域设置键关联的 Unicode 区域设置类型。

JavaFinalize()

当垃圾回收确定不再引用该对象时,由对象上的垃圾回收器调用。

(继承自 Object)
Lookup(IList<Locale.LanguageRange>, ICollection<Locale>)

Locale使用 RFC 4647 中定义的查找机制返回最佳匹配语言标记的实例。

LookupTag(IList<Locale.LanguageRange>, ICollection<String>)

使用 RFC 4647 中定义的查找机制返回最佳匹配的语言标记。

Notify()

唤醒正在等待此对象的监视器的单个线程。

(继承自 Object)
NotifyAll()

唤醒正在等待此对象的监视器的所有线程。

(继承自 Object)
Of(String, String, String)

对象 Locale 表示特定的地理、政治或文化区域。

Of(String, String)

对象 Locale 表示特定的地理、政治或文化区域。

Of(String)

对象 Locale 表示特定的地理、政治或文化区域。

SetDefault(Locale+Category, Locale)

设置Java虚拟机实例的指定类别的默认区域设置。

SetHandle(IntPtr, JniHandleOwnership)

设置 Handle 属性。

(继承自 Object)
StripExtensions()

返回没有扩展的此 Locale 副本。

ToArray<T>()

对象 Locale 表示特定的地理、政治或文化区域。

(继承自 Object)
ToLanguageTag()

返回表示此区域设置的格式正确的 IETF BCP 47 语言标记。

ToString()

返回此 Locale 对象的字符串表示形式,由语言、国家/地区、变体、脚本和扩展组成,如下所示: <blockquote> 语言 + “” + country + “” + (variant + “#” | ”#“) + 脚本 + ”“ + extensions </blockquote>

        Language is always lower case, country is always upper case, script is always title
        case, and extensions are always lower case.
UnregisterFromRuntime()

对象 Locale 表示特定的地理、政治或文化区域。

(继承自 Object)
Wait()

使当前线程等待,直到唤醒它,通常是通过 em 通知/em< 或 >em<interrupted>/em<。><>

(继承自 Object)
Wait(Int64, Int32)

使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。

(继承自 Object)
Wait(Int64)

使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。

(继承自 Object)

显式接口实现

名称 说明
IJavaPeerable.Disposed()

对象 Locale 表示特定的地理、政治或文化区域。

(继承自 Object)
IJavaPeerable.DisposeUnlessReferenced()

对象 Locale 表示特定的地理、政治或文化区域。

(继承自 Object)
IJavaPeerable.Finalized()

对象 Locale 表示特定的地理、政治或文化区域。

(继承自 Object)
IJavaPeerable.JniManagedPeerState

对象 Locale 表示特定的地理、政治或文化区域。

(继承自 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

对象 Locale 表示特定的地理、政治或文化区域。

(继承自 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

对象 Locale 表示特定的地理、政治或文化区域。

(继承自 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

对象 Locale 表示特定的地理、政治或文化区域。

(继承自 Object)

扩展方法

名称 说明
GetJniTypeName(IJavaPeerable)

获取实例 self类型的 JNI 名称。

JavaAs<TResult>(IJavaPeerable)

尝试强制self键入TResult,检查强制是否在Java端有效。

JavaCast<TResult>(IJavaObject)

执行 Android 运行时检查的类型转换。

JavaCast<TResult>(IJavaObject)

对象 Locale 表示特定的地理、政治或文化区域。

TryJavaCast<TResult>(IJavaPeerable, TResult)

尝试强制self键入TResult,检查强制是否在Java端有效。

适用于