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 语言标记扩展有 ca 和 nu。本 JEP 将添加对以下附加扩展的支持:
cu(货币类型)fw(一周的第一天)rg(区域覆盖)tz(时区)
为了支持这些附加扩展,将对以下 API 进行更改:
java.text.DateFormat::get*Instance将根据扩展ca、rg和/或tz返回实例java.text.DateFormatSymbols::getInstance将根据扩展rg返回实例java.text.DecimalFormatSymbols::getInstance将根据扩展rg返回实例java.text.NumberFormat::get*Instance将根据扩展nu和/或rg返回实例java.time.format.DateTimeFormatter::localizedBy将根据扩展ca、rg和/或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 返回的显示名称取决于每个区域设置提供者提供的本地化数据。