JEP 252: Use CLDR Locale Data by Default

OwnerNaoto Sato
Created2014/05/20 17:14
Updated2016/03/20 01:40
TypeFeature
StatusClosed / Delivered
Componentcore-libs / java.util:i18n
ScopeJDK
Discussioni18n dash dev at openjdk dot java dot net
EffortM
DurationM
Priority3
Reviewed byBrian Goetz
Endorsed byBrian Goetz
Release9
Issue8043554

Summary

Use locale data from the Unicode Consortium's Common Locale Data Repository (CLDR) by default.

Motivation

The Unicode Consortium's Common Locale Data Repository is the de-facto standard for locale data on many platforms. Although CLDR locale data is bundled with the JRE as of JDK 8, it is not enabled by default. To turn it on, the end user must explicitly set the system property java.locale.providers, e.g.:

java.locale.providers=JRE,CLDR

By enabling the use of CLDR data by default, de-facto standard locale data will be provided to users without any further action on their part.

Description

Insert CLDR at the front of the default implicit LocaleProviderAdapter preference list.

The default lookup order will be CLDR, JRE, SPI. If a particular provider cannot offer the requested locale data, the search will proceed to the next provider in order. Localized patterns for the formatting and translation of display strings, such as the locale name, may be different in some locales. To enable behavior compatible with JDK 8, set the system property java.locale.providers to a value with JRE ahead of CLDR.

Testing

Locale-sensitive services such as date, time, and number formatting may behave differently for locales not supported in JDK 8. Existing tests and applications will need to be modified.

Risks and Assumptions

We cannot be responsible for the validity of the data coming from CLDR; we assume that it is "good data".