From: "Daniel P. Berrange" <berrange@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: Alberto Garcia <berto@igalia.com>,
qemu-devel@nongnu.org, Gerd Hoffmann <kraxel@redhat.com>
Subject: Re: [Qemu-devel] QEMU produces invalid JSON due to locale-dependent code
Date: Mon, 24 Aug 2015 18:56:48 +0100 [thread overview]
Message-ID: <20150824175648.GV22295@redhat.com> (raw)
In-Reply-To: <87oahwr4x1.fsf@blackfin.pond.sub.org>
On Mon, Aug 24, 2015 at 07:07:38PM +0200, Markus Armbruster wrote:
> Alberto Garcia <berto@igalia.com> writes:
>
> > On Mon 24 Aug 2015 12:05:02 PM CEST, Markus Armbruster wrote:
> >
> >>> This seems to happen because of GTK+ calling setlocale(). The easiest
> >>> solution is probably to call setlocale(LC_NUMERIC, "C") before
> >>> snprintf() (or at start-up ui/gtk.c), but opinions are welcome.
> >>
> >> A library calling setlocale() is a big no-no in my book.
> >>
> >> Overriding LC_NUMERIC as you propose should fix this particular bug.
> >>However, exposing unprepared code to locale is not a good idea for
> >>other categories as well. LC_COLLATE and LC_CTYPE are even sneakier
> >>sources of bugs in my experience. I'd really, really prefer to stay in
> >>the "C" locale *completely*.
> >
> > You can prevent GTK+ from calling setlocale() by using
> > gtk_disable_setlocale() before gtk_init(), but note that setlocale() is
> > needed for gettext.
>
> We can
>
> (A) Internationalize our complete code base
>
> (B) Run in the C locale
>
> Breaks GTK's internationalization.
>
> (C) Run in a mixed locale
>
> Whenever something breaks, we switch another LC_ to the C locale.
>
> Can partially break GTK's internationalization.
>
> I happily concede that (A) would be best. Until the manpower to pull it
> off appears, I recommend (B), because it's safer than (C), and avoids
> inconsistent localization, such as German messages combined with
> non-German number formatting.
It seems the only thing that we really care about being localized is
the messages catalogue, so the GTK UI gets internationalization in
its menus / dialogs / etc. As such I think that we should do the
opposite of (C). ie run every LC_* in the C locale, except for
LC_MESSAGES which we allow to be localized.
This avoids any unpredictable functional consequences (like number
formatting) while still giving user decent localization in the UI
Regards,
Daniel
--
|: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
next prev parent reply other threads:[~2015-08-24 17:56 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-18 23:57 [Qemu-devel] QEMU produces invalid JSON due to locale-dependent code Alberto Garcia
2015-08-24 8:58 ` Daniel P. Berrange
2015-08-24 10:05 ` Markus Armbruster
2015-08-24 10:29 ` Alberto Garcia
2015-08-24 17:07 ` Markus Armbruster
2015-08-24 17:18 ` Eric Blake
2015-08-25 7:54 ` Markus Armbruster
2015-08-25 8:15 ` Alberto Garcia
2015-08-25 12:51 ` Markus Armbruster
2015-08-26 9:13 ` Alberto Garcia
2015-08-26 9:22 ` Daniel P. Berrange
2015-08-26 9:47 ` Markus Armbruster
2015-08-24 17:56 ` Daniel P. Berrange [this message]
2015-08-24 20:27 ` Eric Blake
2015-08-26 6:46 ` Gerd Hoffmann
2015-08-26 9:57 ` Daniel P. Berrange
2015-08-26 12:04 ` Markus Armbruster
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=20150824175648.GV22295@redhat.com \
--to=berrange@redhat.com \
--cc=armbru@redhat.com \
--cc=berto@igalia.com \
--cc=kraxel@redhat.com \
--cc=qemu-devel@nongnu.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.