Mercurial > pidgin.yaz
diff src/main.c @ 7724:613b20c69d2c
[gaim-migrate @ 8369]
this didn't cause me any problems yesterday, and it compiles, and bug fixing is a good thing.
"Some month ago I introduced translatable texts for "gaim --help" and
"gaim-remote --help".
Unfortunately the output of the translated text is often unreadable.
The problem is, that Gaim's *.po files have the UTF-8 locale (because
this is the default charset for GTK+ 2.0). But the users may have
configured other locales. For instance my SuSE Linux 9.0 system is
configured with LANG=de_DE@euro. "euro" is ISO-8859-1 (Western
character set, 8 Bit, with the Euro currency symbol). Lots of UTF-8
characters are unreadable if they are displayed in a 8 Bit charset
without conversion. Only the 7 Bit chars are displayed right.
There are two possible solutions:
1) Make the console texts untranslatable. This isn't very clever.
2) Convert the texts from UTF-8 to user's locale.
I choose the second solution.
The conversion cannot be made during the translation, because gettext
does not allow a mix of different character sets in one po-file.
My patch converts the console strings from UTF-8 to users locale.
Normally this works right, because most users have a locale which is
compatible with their language.
The case where a user uses a language (for instance German:
LANG=de_DE) with an incompatible character set (for instance the 7Bit
charset LC_CTYPE=C) is also handled. The user then sees a warning and
the original UTF-8 message.
At first I tried to make a new UTF-8 function in src/util.c. But the
function is needed 5 times in src/gaim-remote.c and 2 times in
src/main.c. gaim-remote is not linked against util.o. Also there are a
lot of dependencies from util.o to other files, so I will introduce a
lot of trouble to link gaim-remote against util.o.
So I only wrote a function in src/gaim-remote.c and used the UTF-8
conversion inline in src/main.c." --Bjoern Voigt
committer: Tailor Script <tailor@pidgin.im>
author | Luke Schierer <lschiere@pidgin.im> |
---|---|
date | Wed, 03 Dec 2003 13:21:55 +0000 |
parents | f48c6e4db102 |
children | 565369d12874 |
line wrap: on
line diff
--- a/src/main.c Wed Dec 03 07:38:43 2003 +0000 +++ b/src/main.c Wed Dec 03 13:21:55 2003 +0000 @@ -546,9 +546,11 @@ static void show_usage(int mode, const char *name) { + char *text=NULL; + switch (mode) { case 0: /* full help text */ - printf(_("Gaim %s\n" + text=g_strdup_printf(_("Gaim %s\n" "Usage: %s [OPTION]...\n\n" " -a, --acct display account editor window\n" " -w, --away[=MESG] make away on signon (optional argument MESG specifies\n" @@ -563,9 +565,28 @@ " -h, --help display this help and exit\n"), VERSION, name); break; case 1: /* short message */ - printf(_("Gaim %s. Try `%s -h' for more information.\n"), VERSION, name); + text=g_strdup_printf(_("Gaim %s. Try `%s -h' for more information.\n"), VERSION, name); break; } + + if(text) { + char *text_conv; + GError *error=NULL; + + /* tries to convert 'text' to users locale */ + text_conv=g_locale_from_utf8(text,-1,NULL,NULL,&error); + if(text_conv) { + puts(text_conv); + g_free(text_conv); + } + /* use 'text' as a fallback */ + else { + g_warning("%s\n", error->message); + g_error_free(error); + puts(text); + } + g_free(text); + } } #ifdef HAVE_STARTUP_NOTIFICATION