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