RFR: 8370250: Locale should mention the behavior for duplicate subtags [v2]
Justin Lu
jlu at openjdk.org
Tue Oct 21 16:34:26 UTC 2025
On Mon, 20 Oct 2025 23:28:29 GMT, Naoto Sato <naoto at openjdk.org> wrote:
>> Justin Lu has updated the pull request incrementally with one additional commit since the last revision:
>>
>> Reflect Naoto's review
>
> src/java.base/share/classes/java/util/Locale.java line 253:
>
>> 251: * {@code [0-9a-zA-Z]{3,8}} (it is a single subtag with the same
>> 252: * form as a locale type subtag). {@code Locale} does not enforce uniqueness of
>> 253: * locale keys nor attributes. For methods in {@code Locale} and {@code Locale.Builder}
>
> This could be misleading as we are enforcing uniqueness, by ignoring the duplicates. The validity is what is not enforced here.
Good point. I updated that sentence. I held off on using "valid" because while rfc5646 mentions duplicates being "invalid", rfc6067 simply mentions that duplicates have no meaning.
> src/java.base/share/classes/java/util/Locale.java line 2736:
>
>> 2734: * are accepted but ignored. The same behavior applies to duplicate locale
>> 2735: * keys and attributes within a U extension.
>> 2736: *
>
> "Note that..." in the prior occurence of this wording might apply here for consistency.
`Locale.forLanguageTag` is specified to _ignore subsequent subtags on ill-formed input_, so a heads up is warranted. Since `Lcoale.Builder.setLanguageTag` either throws or does not (and duplicate tags do not throw), I think it is implied subsequent subtags are processed. However, that's just my opinion, if you think it is not obvious, I will add it in.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/27909#discussion_r2448963024
PR Review Comment: https://git.openjdk.org/jdk/pull/27909#discussion_r2448963157
More information about the core-libs-dev
mailing list