On 12/12/2025 2:01 PM, Tom Lane wrote:
> Bryan Green <[email protected]> writes:
>> On 12/11/2025 8:43 AM, Peter Eisentraut wrote:
>>> I wonder, this change that gettext did with the locale naming, does that
>>> also affect what guidance we need to provide to users about how to
>>> configure locale names?  For example, on a Unix-ish system, a user can
>>> do something like initdb ... --lc-messages=de_DE.  What locale name
>>> format do you need to use on Windows to get the translations to
>>> activate?  Does this also depend on the gettext version?
> 
>> If the language catalogue is installed then they will get translated
>> messages as expected.  The downside is that because they are passing a
>> posix locale name then gettext will still do the enumeration everytime.
>> This will have the negative performance impact.  The good news is that
>> gettext has accepted my cache patch for their next release.  If a
>> Windows system is configured with lc_messages="de_DE", but has the next
>> release of gettext-- they should be fine.  If they don't have the next
>> release of gettext-- they will notice the performance issue, but that
>> can be fixed by just changing to from "de_DE" to the correct Windows
>> locale name.
> 
> So IIUC, POSIX-style lc_messages settings do still work on Windows and
> will continue to do so, they just incur some extra overhead with
> current gettext versions?
> 
> If that's the case, I'm inclined to leave my NLS-testing patch [1] as-is,
> unconditionally setting a POSIX lc_messages value.  I had anticipated
> adding some logic to it to select a Windows locale name when on
> Windows, but that seems rather messy, and it's not even clear that the
> test would net out faster.  It only needs to do a dozen or so message
> lookups, which has to be set against the time needed to identify what
> platform we are running on.
> 
>                       regards, tom lane
> 
> [1] https://www.postgresql.org/message-id/1038674.1765568967%40sss.pgh.pa.us
Correct.  The translation done for 1M exceptions is what was used as a
benchmark.  That turns into a few million calls to gettext.  Your case
seems like it would not really notice the difference.

-- 
Bryan Green
EDB: https://www.enterprisedb.com


Reply via email to