树叶云鸿蒙OS教程:鸿蒙OS Locale.LanguageRange

Locale.LanguageRange

java.lang.Object

|—java.util.Locale.LanguageRange

public static final class Locale.LanguageRange
extends Object

此类表示 RFC 4647 语言标签匹配中定义的语言范围。 语言范围是一个标识符,用于通过使用区域设置匹配中描述的机制来选择满足特定要求的语言标签。 代表用户偏好并由语言范围组成的列表称为语言优先级列表。

有两种类型的语言范围:基本和扩展。 在 RFC 4647 中,语言范围的语法用 ABNF 表示如下:

     basic-language-range    = (1*8ALPHA *("-" 1*8alphanum)) / "*"
     extended-language-range = (1*8ALPHA / "*")
                               *("-" (1*8alphanum / "*"))
     alphanum                = ALPHA / DIGIT

例如,“en”(英语)、“ja-JP”(日语、日本)、“”(匹配任何语言标签的特殊语言范围)是基本语言范围,而“-CH”(任何语言,瑞士)、 “es-”(西班牙语,任何地区)和“zh-Hant-”(繁体中文,任何地区)是扩展的语言范围。

字段摘要

修饰符喝类型字段描述
static doubleMAX_WEIGHT保持权重最大值 1.0 的常数,表示语言范围非常适合用户。
static doubleMIN_WEIGHT保持权重最小值 0.0 的常数,表示语言范围不适合用户。

构造函数摘要

构造函数描述
LanguageRange(String range)使用给定范围构造 LanguageRange。
LanguageRange(String range, double weight)使用给定的范围和权重构造 LanguageRange。

方法总结

修饰符喝类型方法描述
booleanequals(Object obj)将此对象与指定对象进行比较。
StringgetRange()返回此 LanguageRange 的语言范围。
doublegetWeight()返回此 LanguageRange 的权重。
inthashCode()返回对象的哈希码值。
static ListLocale.LanguageRangemapEquivalents(ListLocale.LanguageRange priorityList, MapString,ListString map)使用给定的 priorityList 和映射生成新的自定义语言优先级列表。
static ListLocale.LanguageRangeparse(String ranges)解析给定的范围以生成语言优先级列表。
static ListLocale.LanguageRangeparse(String ranges, MapString,ListString map)解析给定范围以生成语言优先级列表,然后使用给定映射自定义列表。
从类 java.lang.Object 继承的方法
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait

字段详细信息

MAX_WEIGHT

public static final double MAX_WEIGHT

保持权重最大值 1.0 的常数,表示语言范围非常适合用户。

MIN_WEIGHT

public static final double MIN_WEIGHT

保持权重最小值 0.0 的常数,表示语言范围不适合用户。

构造函数详细信息

LanguageRange

public LanguageRange(String range)

使用给定范围构造 LanguageRange。 请注意,在构建时不会针对 IANA 语言子标签注册表进行验证。

这相当于 LanguageRange(range, MAX_WEIGHT)。

参数:

参数名称参数描述
range语言范围

Throws:

Throw名称Throw描述
NullPointerException如果给定范围为空

LanguageRange

public LanguageRange(String range, double weight)

使用给定的范围和权重构造 LanguageRange。 请注意,在构建时不会针对 IANA 语言子标签注册表进行验证。

参数:

参数名称参数描述
range语言范围
weight介于 MIN_WEIGHT 和 MAX_WEIGHT 之间的权重值

Throws:

Throw名称Throw描述
NullPointerException如果给定范围为空
IllegalArgumentException如果给定的重量小于 MIN_WEIGHT 或大于 MAX_WEIGHT

方法详情

getRange

public String getRange()

返回此 LanguageRange 的语言范围。

返回:

语言范围。

getWeight

public double getWeight()

返回此 LanguageRange 的权重。

返回:

weight 值。

parse

public static ListLocale.LanguageRange parse(String ranges)

解析给定的范围以生成语言优先级列表。

此方法对给定范围内的每个语言范围执行语法检查,但不使用 IANA 语言子标签注册表进行验证。

要给出的范围可以采用以下形式之一:

   "Accept-Language: ja,en;q=0.4"  (weighted list with Accept-Language prefix)
   "ja,en;q=0.4"                   (weighted list)
   "ja,en"                         (prioritized list)

在加权列表中,每个语言范围都有一个权重值。权重值与 RFC 2616 中的“质量值”相同,它表示用户对语言的偏好程度。在对应的语言范围后面加上“;q=”指定权重值,省略时默认权重值为MAX_WEIGHT。

与加权列表不同,优先列表中的语言范围根据其优先级按降序排列。第一语言范围的优先级最高,最符合用户的偏好。

在任何一种情况下,语言范围都会根据优先级或权重在语言优先级列表中按降序排序。如果一个语言范围多次出现在给定的范围中,则只有第一个包含在语言优先级列表中。

返回的列表由给定范围中的语言范围及其在 IANA 语言子标签注册表中找到的等价物组成。例如,如果给定的范围是“Accept-Language: iw,en-us;q=0.7,en;q=0.3”,则要返回的列表中的元素是:

  Range                                   Weight
    "iw" (older tag for Hebrew)             1.0
    "he" (new preferred code for Hebrew)    1.0
    "en-us" (English, United States)        0.7
    "en" (English)                          0.3

两个语言范围“iw”和“he”在列表中具有相同的最高优先级。 通过将“he”添加到用户的语言优先级列表中,即使应用程序或系统仅提供“he”作为支持的语言环境(或语言标签),语言环境匹配方法也可以找到希伯来语作为匹配的语言环境(或语言标签)。

参数:

参数名称参数描述
ranges以逗号分隔的语言范围列表或以 RFC 2616 中定义的“Accept-Language”标头形式的语言范围列表

返回:

语言优先级列表,包括给定范围内的语言范围及其等效的语言范围(如果有)。 该列表是可修改的。

Throws:

Throw名称Throw描述
NullPointerException如果 ranges 为空
IllegalArgumentException如果在给定范围内找到的语言范围或权重格式不正确

parse

public static ListLocale.LanguageRange parse(String ranges, MapString,ListString map)

解析给定范围以生成语言优先级列表,然后使用给定映射自定义列表。 该方法等价于 mapEquivalents(parse(ranges), map)。

参数:

参数名称参数描述
ranges以逗号分隔的语言范围列表或以 RFC 2616 中定义的“Accept-Language”标头形式的语言范围列表
map包含自定义语言范围信息的 map

返回:

带有自定义的语言优先级列表。 该列表是可修改的。

Throws:

Throw名称Throw描述
NullPointerException如果 ranges 为空
IllegalArgumentException如果在给定范围内找到的语言范围或权重格式不正确

mapEquivalents

public static ListLocale.LanguageRange mapEquivalents(ListLocale.LanguageRange priorityList, MapString,ListString map)

使用给定的 priorityList 和映射生成新的自定义语言优先级列表。 如果给定映射为空,则此方法返回给定 priorityList 的副本。

在 map 中,键表示语言范围,而值是它的等价物列表。 ‘*’ 不能在 map 中使用。 每个等效语言范围具有与其原始语言范围相同的权重值。

  An example of map:
    Key                            Value
      "zh" (Chinese)                 "zh",
                                     "zh-Hans"(Simplified Chinese)
      "zh-HK" (Chinese, Hong Kong)   "zh-HK"
      "zh-TW" (Chinese, Taiwan)      "zh-TW"

使用 IANA 语言子标签注册表修改后执行自定义。

例如,如果用户的语言优先级列表由五个语言范围(“zh”、“zh-CN”、“en”、“zh-TW”和“zh-HK”)组成,则新生成的语言优先级列表 使用上面的 map 示例自定义将由“zh”、“zh-Hans”、“zh-CN”、“zh-Hans-CN”、“en”、“zh-TW”和“zh-HK”组成 .

“zh-HK”和“zh-TW”不会转换为“zh-Hans-HK”或“zh-Hans-TW”,即使它们包含在语言优先级列表中。 在这个例子中,映射用于清楚地区分简体中文和繁体中文。

如果映射中不包含“zh”-to-“zh”映射,将执行简单替换,自定义列表将不包含“zh”和“zh-CN”。

参数:

参数名称参数描述
priorityList用户的语言优先级列表
map包含自定义语言范围信息的 map

返回:

具有自定义功能的新语言优先级列表。 该列表是可修改的。

Throws:

Throw名称Throw描述
NullPointerException如果 priorityList 为空

hashCode

public int hashCode()

返回对象的哈希码值。

覆盖:

类 Object 中的 hashCode

返回:

此对象的哈希码值。

equals

public boolean equals(Object obj)

将此对象与指定对象进行比较。 当且仅当参数不为 null 并且是包含与此对象相同的范围和权重值的 LanguageRange 对象时,结果才为 true。

覆盖:

类 Object 中的等于

参数:

参数名称参数描述
obj比较的对象

返回:

如果此对象的范围和权重与 obj 相同,则为 true; 否则为 false。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/201388.html<

(0)
管理的头像管理
上一篇2025-04-05 17:57
下一篇 2025-04-05 17:59

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注