openjdk.ruOpenJDK на русском

JEP 314: Additional Unicode Language-Tag Extensions

Дополнительные расширения языковых тегов Unicode

ОтветственныйNaoto Sato
ТипFeature
ОбластьSE
СтатусClosed / Delivered
Выпуск10
Компонентcore-libs / java.util:i18n
Обсуждениеi18n dash dev at openjdk dot java dot net
РецензентыAlan Bateman, Brian Goetz
ОдобренBrian Goetz
Создан2017/03/24 23:19
Обновлён2018/03/06 17:15
Задача8177568

Аннотация

Доработать java.util.Locale и связанные API, чтобы реализовать дополнительные расширения Unicode для языковых тегов BCP 47.

Цели

Поддержка языковых тегов BCP 47 изначально была добавлена в Java SE 7, при этом поддержка расширения локали Unicode ограничивалась календарями и числами. Этот JEP реализует в соответствующих классах JDK больше расширений из последней версии спецификации LDML.

Что не является целью

Расширения языковых тегов Unicode, кроме описанных ниже, будут игнорироваться.

Описание

В Java SE 9 поддерживаемые расширения U языковых тегов BCP 47 — это 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 появятся новые SPI для ключей и типов этих расширений U

Риски и допущения

Отображаемые имена, которые возвращает Locale::getDisplayName, зависят от локализованных данных, предоставляемых каждым поставщиком локалей.