From: Eli Zaretskii <eliz@gnu.org>
To: "Владимир Мартьянов" <vilgeforce@gmail.com>
Cc: gdb-patches@sourceware.org
Subject: Re: [PATCH][PR server/24377] Fix mixing English and system default languages in error messages on Windows
Date: Mon, 01 Apr 2019 04:47:00 -0000 [thread overview]
Message-ID: <83bm1qgwm2.fsf@gnu.org> (raw)
In-Reply-To: <CAL5iTP+7snxFyw4B8bfBNJtfy+B3p3kSCfdQcChmkw+gwrN5eA@mail.gmail.com> (message from =?utf-8?B?0JLQu9Cw0LTQuNC80LjRgCDQnNCw0YDRgtGM0Y/QvdC+0LI=?= on Sun, 31 Mar 2019 22:39:01 +0300)
> From: ÐÐ»Ð°Ð´Ð¸Ð¼Ð¸Ñ ÐаÑÑÑÑнов <vilgeforce@gmail.com>
> Date: Sun, 31 Mar 2019 22:39:01 +0300
> Cc: gdb-patches@sourceware.org
>
> > 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 was not talking about _using_ the environment variables, I was
talking about making them the (only) way of changing the locale.
> + static HMODULE hMlang = LoadLibrary ("Mlang.dll");
> + HMODULE hKernel32 = GetModuleHandle ("kernel32.dll");
I think this should not be an initialization, this should be a
run-timer assignment, like this:
if (!hMlang)
hMlang = LoadLibrary ("Mlang.dll");
Also, we should only try to load mlang.dll if LocaleNameToLCID is not
available.
> + RFC1766TOLCID Rfc1766ToLcid = NULL;
> + LOCALENAMETOLCID LocaleNameToLCID = NULL;
These two should also be static.
> + strncpy (buf, localeName, COUNTOF (buf) - 1);
> + ptr = strchr (buf, '.'); /* cut at "." */
> + if (ptr != NULL)
> + *ptr = 0x00;
> +
> + ptr = strchr (buf, '_'); /* replace "_" */
> + if (ptr != NULL)
> + *ptr = '-';
Can you explain in a comment why these modifications of the
environment variable's value are needed? I don't think the reasons
are trivially clear to everyone.
> + if (LocaleNameToLCID != NULL)
> + {
> + MultiByteToWideChar (CP_ACP,
> + 0,
> + buf,
> + -1,
> + wbuf,
> + COUNTOF (wbuf) - 1);
> + lcid = LocaleNameToLCID (wbuf, 0);
This assumes that the code is compiled with UNICODE defined, which
will then call LocaleNameToLCIDW. But the code in question is common
to Cygwin and MinGW compilations, and the latter defaults to UNICODE
undefined. So I think you need to call LocaleNameToLCIDW explicitly
here.
Thanks.
next prev parent reply other threads:[~2019-04-01 4:47 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-03-23 11:59 Владимир Мартьянов
2019-03-23 13:11 ` Eli Zaretskii
2019-03-28 20:36 ` Владимир Мартьянов
2019-03-29 8:27 ` Eli Zaretskii
2019-03-29 8:42 ` Владимир Мартьянов
2019-03-29 9:29 ` Eli Zaretskii
2019-03-29 9:39 ` Владимир Мартьянов
2019-03-29 12:32 ` Eli Zaretskii
2019-03-30 21:26 ` Владимир Мартьянов
2019-03-31 14:45 ` Eli Zaretskii
2019-03-31 19:39 ` Владимир Мартьянов
2019-04-01 4:47 ` Eli Zaretskii [this message]
2019-04-02 20:08 ` Владимир Мартьянов
2019-04-03 4:30 ` Eli Zaretskii
2019-04-01 22:08 ` Jon Turney
2019-04-02 20:57 ` Владимир Мартьянов
2019-04-02 21:10 ` Jon Turney
2019-04-02 21:18 ` Владимир Мартьянов
2019-04-03 4:48 ` Eli Zaretskii
2019-04-03 4:58 ` LRN
2019-04-03 7:37 ` Eli Zaretskii
2019-04-03 11:32 ` LRN
2019-04-03 12:04 ` Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=83bm1qgwm2.fsf@gnu.org \
--to=eliz@gnu.org \
--cc=gdb-patches@sourceware.org \
--cc=vilgeforce@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox