Re: ICU locale validation / canonicalization

Peter Eisentraut <peter.eisentraut@enterprisedb.com>

From: Peter Eisentraut <peter.eisentraut@enterprisedb.com>
To: Jeff Davis <pgsql@j-davis.com>, Robert Haas <robertmhaas@gmail.com>
Cc: pgsql-hackers@postgresql.org
Date: 2023-04-04T13:13:53Z
Lists: pgsql-hackers
On 31.03.23 12:11, Jeff Davis wrote:
> On Thu, 2023-03-30 at 08:59 +0200, Peter Eisentraut wrote:
>> I don't think we should show the notice when the canonicalization
>> doesn't change anything.  This is not useful:
>>
>> +NOTICE:  using language tag "und-u-kf-upper" for locale "und-u-kf-
>> upper"
> 
> Done.
> 
>> Also, the message should be phrased more from the perspective of the
>> user instead of using ICU jargon, like
>>
>> NOTICE:  using canonicalized form "%s" for locale specification "%s"
>>
>> (Still too many big words?)
> 
> Changed to:
> 
>     NOTICE:  using standard form "%s" for locale "%s"
> 
>> Needs documentation updates in doc/src/sgml/charset.sgml.
> 
> I made a very minor update. Do you have something more specific in
> mind?

This all looks good to me.




Commits

  1. Add missing source file to nls.mk

  2. Fix MSVC warning introduced in ea1db8ae70.

  3. Canonicalize ICU locale names to language tags.

  4. Validate ICU locales.

  5. initdb: emit message when using default ICU locale.

  6. initdb: replace check_icu_locale() with default_icu_locale().

  7. Fix error inconsistency in older ICU versions.

  8. Avoid potential UCollator leak for older ICU versions.

  9. pg_locale.c: change ereport() to elog().

  10. Handle the "und" locale in ICU versions 54 and older.

  11. Wrap ICU ucol_open().

  12. Support language tags in older ICU versions (53 and earlier).

  13. Improve support for UNICODE collation on older ICU

  14. Use ICU by default at initdb time.