Relates :
|
|
Relates :
|
|
Relates :
|
|
Relates :
|
|
Relates :
|
JDK-8185647 :
|
Summary ------- Enhance `java.util.Locale` and related APIs to implement additional Unicode extensions of BCP 47 language tags. Goals ----- Support for [BCP 47][bcp47] language tags was was initially [added in Java SE 7][1], 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][2], 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][3] 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 extensions `ca`, `rg` and/or `tz` - `java.text.DateFormatSymbols::getInstance` will return instances based on the extension `rg` - `java.text.DecimalFormatSymbols::getInstance` will return instances based on the extension `rg` - `java.text.NumberFormat::get*Instance` will return instances based on the extensions `nu` and/or `rg` - `java.time.format.DateTimeFormatter::localizedBy` will return `DateTimeFormatter` instances based on the extensions `ca`, `rg`, and/or `tz` - `java.time.format.DateTimeFormatterBuilder::getLocalizedDateTimePattern` will return pattern string based on the `rg` extension. - `java.time.format.DecimalStyle::of` will return `DecimalStyle` instances based on the extensions `nu`, and/or `rg` - `java.time.temporal.WeekFields::of` will return `WeekFields` instances based on the extensions `fw` and/or `rg` - `java.util.Calendar::{getFirstDayOfWeek,getMinimalDaysInWeek}` will return values based on the extensions `fw` and/or `rg` - `java.util.Currency::getInstance` will return `Currency` instances based on the extensions `cu` and/or `rg` - `java.util.Locale::getDisplayName` will return a string that includes display names for these U extensions - `java.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. [1]: http://openjdk.java.net/projects/locale-enhancement/ [2]: http://www.unicode.org/reports/tr35/tr35.html#Locale_Extension_Key_and_Type_Data [3]: http://www.oracle.com/technetwork/java/javase/documentation/java9locales-3559485.html [bcp47]: http://www.rfc-editor.org/rfc/bcp/bcp47.txt
|