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

Eli Zaretskii
2019-03-29T09:29:34Z

> From: Ð’Ð»Ð°Ð´Ð¸Ð¼Ð¸Ñ€ ÐœÐ°Ñ€Ñ‚ÑŒÑÐ½Ð¾Ð² <vilgeforce@gmail.com>
> Date: Fri, 29 Mar 2019 11:42:36 +0300
> Cc: gdb-patches@sourceware.org
>
> Just try to use gettext with FormatMessage. I don't have idea how to
> do it, could you please give me a code sample?

I believe this is a misunderstanding of some kind, because there's
nothing wrong with FormatMessage calls. As you originally pointed
out, the 4th argument to FormatMessage is zero, which means use the
system default locale. The problem you raised was that gdbserver has
messages where English is hard-coded, so this makes gdbserver
sometimes talk in English and sometimes in the default locale's
language.

My proposal was to make gdbserver _always_ talk in the current
locale's language, which means the FormatMessage call should be left
alone, and instead those gdbserver messages that use English
hard-coded should be translated by using gettext.

That is, instead of

error ("Error creating process \"%s%s\", (error %d): %s\n",
program, args, (int) err, strwinerror (err));

gdbserver should use this:

error (_("Error creating process \"%s%s\", (error %d): %s\n"),
program, args, (int) err, strwinerror (err));

A question to other GDB maintainers: does gdbserver use gettext? Or
is gdbserver supposed to talk to users only in English?