JEP 314: Additional Unicode Language-Tag Extensions
Owner | Naoto Sato |
Type | Feature |
Scope | SE |
Status | Closed / Delivered |
Release | 10 |
Component | core-libs / java.util:i18n |
Discussion | i18n dash dev at openjdk dot java dot net |
Reviewed by | Alan Bateman, Brian Goetz |
Endorsed by | Brian Goetz |
Created | 2017/03/24 23:19 |
Updated | 2018/03/06 17:15 |
Issue | 8177568 |
Summary
Enhance java.util.Locale
and related APIs to implement additional Unicode extensions of BCP 47 language tags.
Goals
Support for BCP 47 language tags was was initially added in Java SE 7, with support for the Unicode locale extension limited to calendars and numbers. This JEP will implement more of the extensions specified in the latest LDML specification, in the relevant JDK classes.
Non-Goals
Unicode language-tag extensions other than those described below will be ignored.
Description
As of Java SE 9, the supported BCP 47 U language-tag extensions are ca
and nu
. This JEP will add support for the following additional extensions:
cu
(currency type)fw
(first day of week)rg
(region override)tz
(time zone)
In order to support these additional extensions, changes will be made to the following APIs:
java.text.DateFormat::get*Instance
will return instances based on the extensionsca
,rg
and/ortz
java.text.DateFormatSymbols::getInstance
will return instances based on the extensionrg
java.text.DecimalFormatSymbols::getInstance
will return instances based on the extensionrg
java.text.NumberFormat::get*Instance
will return instances based on the extensionsnu
and/orrg
java.time.format.DateTimeFormatter::localizedBy
will returnDateTimeFormatter
instances based on the extensionsca
,rg
, and/ortz
java.time.format.DateTimeFormatterBuilder::getLocalizedDateTimePattern
will return pattern string based on therg
extension.java.time.format.DecimalStyle::of
will returnDecimalStyle
instances based on the extensionsnu
, and/orrg
java.time.temporal.WeekFields::of
will returnWeekFields
instances based on the extensionsfw
and/orrg
java.util.Calendar::{getFirstDayOfWeek,getMinimalDaysInWeek}
will return values based on the extensionsfw
and/orrg
java.util.Currency::getInstance
will returnCurrency
instances based on the extensionscu
and/orrg
java.util.Locale::getDisplayName
will return a string that includes display names for these U extensionsjava.util.spi.LocaleNameProvider
will have new SPIs for the keys and types of these U extensions
Risks and Assumptions
The display names returned from Locale::getDisplayName
depend on the localized data provided by each locale provider.