Mercurial > pidgin.yaz
comparison 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 |
comparison
equal
deleted
inserted
replaced
7723:9235eecc9f74 | 7724:613b20c69d2c |
---|---|
544 } | 544 } |
545 | 545 |
546 static void | 546 static void |
547 show_usage(int mode, const char *name) | 547 show_usage(int mode, const char *name) |
548 { | 548 { |
549 char *text=NULL; | |
550 | |
549 switch (mode) { | 551 switch (mode) { |
550 case 0: /* full help text */ | 552 case 0: /* full help text */ |
551 printf(_("Gaim %s\n" | 553 text=g_strdup_printf(_("Gaim %s\n" |
552 "Usage: %s [OPTION]...\n\n" | 554 "Usage: %s [OPTION]...\n\n" |
553 " -a, --acct display account editor window\n" | 555 " -a, --acct display account editor window\n" |
554 " -w, --away[=MESG] make away on signon (optional argument MESG specifies\n" | 556 " -w, --away[=MESG] make away on signon (optional argument MESG specifies\n" |
555 " name of away message to use)\n" | 557 " name of away message to use)\n" |
556 " -l, --login[=NAME] automatically login (optional argument NAME specifies\n" | 558 " -l, --login[=NAME] automatically login (optional argument NAME specifies\n" |
561 " -d, --debug print debugging messages to stdout\n" | 563 " -d, --debug print debugging messages to stdout\n" |
562 " -v, --version display the current version and exit\n" | 564 " -v, --version display the current version and exit\n" |
563 " -h, --help display this help and exit\n"), VERSION, name); | 565 " -h, --help display this help and exit\n"), VERSION, name); |
564 break; | 566 break; |
565 case 1: /* short message */ | 567 case 1: /* short message */ |
566 printf(_("Gaim %s. Try `%s -h' for more information.\n"), VERSION, name); | 568 text=g_strdup_printf(_("Gaim %s. Try `%s -h' for more information.\n"), VERSION, name); |
567 break; | 569 break; |
570 } | |
571 | |
572 if(text) { | |
573 char *text_conv; | |
574 GError *error=NULL; | |
575 | |
576 /* tries to convert 'text' to users locale */ | |
577 text_conv=g_locale_from_utf8(text,-1,NULL,NULL,&error); | |
578 if(text_conv) { | |
579 puts(text_conv); | |
580 g_free(text_conv); | |
581 } | |
582 /* use 'text' as a fallback */ | |
583 else { | |
584 g_warning("%s\n", error->message); | |
585 g_error_free(error); | |
586 puts(text); | |
587 } | |
588 g_free(text); | |
568 } | 589 } |
569 } | 590 } |
570 | 591 |
571 #ifdef HAVE_STARTUP_NOTIFICATION | 592 #ifdef HAVE_STARTUP_NOTIFICATION |
572 static void | 593 static void |