Skip to content
微信扫码关注公众号

JEP 314: Additional Unicode Language-Tag Extensions | 附加 Unicode 语言标记扩展

摘要

增强 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 返回的显示名称取决于每个区域设置提供者提供的本地化数据。