annotate gaim2blt.pl @ 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 66bf7ecefedd
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1741
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
1 #!/usr/bin/perl -w
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
2 # Original by Andy Harrison,
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
3 # Rewrite by Decklin Foster,
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
4 # Available under the GPL.
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
5
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
6 package Gaim2Blt;
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
7 use strict;
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
8 use Getopt::Std;
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
9 use vars qw(%opts $in_group);
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
10
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
11 getopts('s:', \%opts);
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
12 die "usage: $0 -s 'screen name' gaim.buddy\n" unless $opts{s};
1685
e8e190793fe3 [gaim-migrate @ 1695]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
13
1741
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
14 print <<"EOF";
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
15 Config {
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
16 version 1
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
17 }
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
18 User {
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
19 screenname "$opts{s}"
1685
e8e190793fe3 [gaim-migrate @ 1695]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
20 }
1741
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
21 Buddy {
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
22 list {
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
23 EOF
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
24
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
25 while (<>) {
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
26 chomp;
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
27 my ($type, $args) = split ' ', $_, 2;
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
28 next unless $type;
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
29
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
30 if ($type eq 'g') {
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
31 print " }\n" if ($in_group);
3489
66bf7ecefedd [gaim-migrate @ 3545]
Christian Hammond <chipx86@chipx86.com>
parents: 3389
diff changeset
32 print qq( "$args" {\n);
1741
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
33 $in_group = 1;
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
34 } elsif ($type eq 'b') {
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
35 my ($buddy, $alias) = split /:/, $args;
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
36 print qq( "$buddy"\n);
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
37 }
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
38 }
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
39
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
40 print <<"EOF";
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
41 }
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
42 }
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
43 }
7506587a394d [gaim-migrate @ 1751]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1686
diff changeset
44 EOF