On Tue, Jun 15, 2004 at 15:12:21 -0300, "Cristóv?o B. B. Dalla Costa" wrote:
Hello In the app I'm programming, with localization support, we use libglade. For a while now we've been plagued by a gettext problem in which some messages would appear with garbage in place of accented letters. Today we finally traced the problem down. Glade requires the program's to set it's locale to *.UTF-8 otherwise it'll spew all kinds of garbage. However, when a widget's label is set from the program (not via glade) it will produce the erroneous output I described previously. I'm posting this here because we've worked on Gtk2 programs written in C and Python and only those written in Perl show this behaviour, so I think it might be a gtk-perl bug. A temporary solution is to use Unicode::MapUTF8 to convert localized strings back to ISO-8859-1 before using them in Gtk widgets, but that's ugly and cumbersome: my $dlg = Gtk2::MessageDialog->new (undef, "destroy-with-parent", "info", "close", from_utf8 ({ -string => gettext ($msg), -charset => 'ISO-8859-1'}));
It seems that there is a bug in gettext. Perl has two types of strings -- octet streams and unicode. It's a mess, sometimes. Read the perlunicode manpage to find more about it. Now what really should be done is forcing gettext to mark the string as unicode one if it is one.
Is it anything I'm doing wrong, or is it a Perl Glade bug (which is what I'm inclined to believe)?
No. It's a gettext bug. It returns unicode string, but does not mark it as such. And all the glib-perl/gtk2-perl/gtk2-glade-perl stuff honors that marks. ------------------------------------------------------------------------------- Jan 'Bulb' Hudec <bulb ucw cz>
Attachment:
signature.asc
Description: Digital signature