跳到主要内容

JEP 314:附加 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``DateTimeFormatter将根据扩展名carg和/或返回实例tz
  • java.time.format.DateTimeFormatterBuilder::getLocalizedDateTimePattern将根据rg扩展名返回模式字符串。
  • java.time.format.DecimalStyle::of``DecimalStyle将根据扩展名返回实例nu,和/或rg
  • java.time.temporal.WeekFields::of``WeekFields将根据扩展名返回实例fw和/或rg
  • java.util.Calendar::{getFirstDayOfWeek,getMinimalDaysInWeek}将根据扩展名返回值fw和/或rg
  • java.util.Currency::getInstance``Currency将根据扩展名返回实例cu和/或rg
  • java.util.Locale::getDisplayName将返回一个字符串,其中包含这些 U 扩展的显示名称
  • java.util.spi.LocaleNameProvider将为这些 U 扩展的键和类型提供新的 SPI

风险和假设

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