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 语言标签扩展为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``DateTimeFormatter
将根据扩展名ca
、rg
和/或返回实例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
取决于每个区域设置提供者提供的本地化数据。