JEP 252: Use CLDR Locale Data by Default

OwnerNaoto Sato
StatusClosed / Delivered
Componentcore-libs / java.util:i18n
Discussioni18n dash dev at openjdk dot java dot net
Reviewed byBrian Goetz
Endorsed byBrian Goetz
Created2014/05/20 17:14
Updated2017/10/23 21:26


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


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.:


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.


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

The default lookup order will be CLDR, COMPAT, SPI, where COMPAT designates the JRE's locale data in JDK 9. 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 COMPAT ahead of CLDR.


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".