Re: [PATCH][PR server/24377] Fix mixing English and system default languages in error messages on Windows

Jon Turney
2019-04-01T22:08:56Z

On 31/03/2019 20:39, Ð’Ð»Ð°Ð´Ð¸Ð¼Ð¸Ñ€ ÐœÐ°Ñ€Ñ‚ÑŒÑÐ½Ð¾Ð² wrote:
> Ð²Ñ, 31 Ð¼Ð°Ñ€. 2019 Ð³. Ð² 17:45, Eli Zaretskii <eliz@gnu.org>:
>
>> Bother: do we want to behave like a Posix platform here, or like a
>> Windows system? Windows doesn't have LC_MESSAGES as a locale
>> category.
>
> I just saw LC_MESSAGES usage in gettext...

Having LC_MESSAGES be controlling is definitely correct for Cygwin.

I'm not sure about a MinGW build of gdb.

>> Finally, a more general point: I'm not sure I understand the purpose
>> of this change. Is the purpose to let users control the language of
>> the gdbserver system error messages?
>
> Yes, it's the purprose.

I'm wondering why this problem doesn't crop up in gdb itself? Are there
no uses of FormatMessage() in that?

>> If so, would they need to
>> control that by setting environment variables? It sounds less
>> convenient than it could have been, I think. Why not a GDB variable
>> instead?
>
> Environment variables are used in gettext anyway, I think single
> source for localisation language is convenient.
>
> I corrected issues you mentioned (I hope!) and made a function to get locale ID.

A few comments on your get_lcid() function:

- It looks like this is going to ignore LC_ALL etc. if LocaleNameToLCID
and Rfc1766ToLcidW can't found. This doesn't seem correct as the
environment variable should still have an effect.

- You're not checking all the environment variables which might control
the locale for the message locale category (See e.g. [1]). I don't think
there's any need to do this by hand, since you should be able to use the
result of setlocale(LC_MESSAGE, NULL)?

[1]