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