跳到主要内容

JEP 314:额外的 Unicode 语言标签扩展

QWen Max 中英对照 JEP 314 Additional Unicode Language-Tag Extensions

概述

增强 java.util.Locale 和相关 API,以实现 BCP 47 语言标签的更多 Unicode 扩展。

目标

BCP 47 语言标签的支持最初是在 Java SE 7 中添加的,对 Unicode 区域设置扩展的支持仅限于日历和数字。本 JEP 将在相关的 JDK 类中实现最新 LDML 规范 中指定的更多扩展。

非目标

除以下描述的 Unicode 语言标记扩展外,其余的都将被忽略。

描述

从 Java SE 9 开始,支持的 BCP 47 U 语言标签扩展canu。本 JEP 将增加对以下额外扩展的支持:

  • cu(货币类型)
  • fw(一周的首日)
  • rg(区域覆盖)
  • tz(时区)

为了支持这些额外的扩展,将对以下 API 进行更改:

  • java.text.DateFormat::get*Instance 将基于扩展 carg 和/或 tz 返回实例
  • java.text.DateFormatSymbols::getInstance 将基于扩展 rg 返回实例
  • java.text.DecimalFormatSymbols::getInstance 将基于扩展 rg 返回实例
  • java.text.NumberFormat::get*Instance 将基于扩展 nu 和/或 rg 返回实例
  • java.time.format.DateTimeFormatter::localizedBy 将基于扩展 carg 和/或 tz 返回 DateTimeFormatter 实例
  • java.time.format.DateTimeFormatterBuilder::getLocalizedDateTimePattern 将基于扩展 rg 返回模式字符串。
  • java.time.format.DecimalStyle::of 将基于扩展 nu 和/或 rg 返回 DecimalStyle 实例
  • java.time.temporal.WeekFields::of 将基于扩展 fw 和/或 rg 返回 WeekFields 实例
  • java.util.Calendar::{getFirstDayOfWeek,getMinimalDaysInWeek} 将基于扩展 fw 和/或 rg 返回值
  • java.util.Currency::getInstance 将基于扩展 cu 和/或 rg 返回 Currency 实例
  • java.util.Locale::getDisplayName 将返回包含这些 U 扩展显示名称的字符串
  • java.util.spi.LocaleNameProvider 将具有针对这些 U 扩展键和类型的新的 SPI

风险与假设

Locale::getDisplayName 返回的显示名称取决于每个区域设置提供程序提供的本地化数据。