Locale languageTag anomaly
Naoto Sato
naoto.sato at oracle.com
Thu Jun 7 21:42:26 UTC 2018
Hi Jon,
JDK historically represents Norwegian Nynorsk language with no_NO_NY
(JDK unique "NY" variant), because it predates the ISO 639-1:2002
standard which introduced "nn" as the language code for Nynorsk. This
legacy JDK locale is converted to BCP47 compliant language tag using
"nn" language code.
Locale.toLanguageTag() has the following sentence for this:
---
A locale with language "no", country "NO", and variant "NY",
representing Norwegian Nynorsk (Norway), is converted to a language tag
"nn-NO".
---
So in short, that is the expected behavior.
Naoto
On 6/7/18 2:19 PM, Jonathan Gibbons wrote:
> Regarding Locale.toLanguageTag, Locale.forLanguageTag
>
> Should I be surprised (i.e. is it a bug) that out of 736 installed
> locales in a standard build of JDK, exactly 1 locale fails the following
> round-trip test:
>
> locale.equals(Locale.forLanguageTag(locale.toLanguageTag()))
>
> The locale "no_NO_NY" comes back as "nn_NO".
>
> Attached is a test program. Here is the output from the test program:
>
> $ /opt/jdk/1.9.0/bin/java -cp play/locales/classes Locales
> test locale: no_NO_NY [no,NO,NY] nn-NO
> forLanguageTag: nn_NO
> Tested 736 locales
> Mismatch 1 locales
>
> -- Jon
More information about the core-libs-dev
mailing list