The R Project SVN R-packages

Rev

Rev 5677 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5677 Rev 5732
Line 1... Line 1...
1
#!/usr/bin/perl
1
#!/usr/bin/perl
-
 
2
#
-
 
3
# Options:  KEEP=1      do not dlete temporary files
-
 
4
#           MODE=plain  the input is of the form "foo" = "bar"; only
2
 
5
 
3
$td="/tmp/nib-$$";
6
$td="/tmp/nib-$$";
4
system "rm -rf '$td'";
7
system "rm -rf '$td'";
5
mkdir "/tmp/nib-$$" || die "cannot create temporary directory for processing";
8
mkdir "/tmp/nib-$$" || die "cannot create temporary directory for processing";
6
 
9
 
Line 12... Line 15...
12
    print "\n Usage: $ARGV[0] <english.nib> <strings> <lang.nib>\n\n";
15
    print "\n Usage: $ARGV[0] <english.nib> <strings> <lang.nib>\n\n";
13
    exit 1;
16
    exit 1;
14
}
17
}
15
 
18
 
16
open IN, "$str" || die "cannot open strings file";
19
open IN, "$str" || die "cannot open strings file";
-
 
20
 
-
 
21
system "ibtool --generate-strings-file '$td/en.uni' '$en'" || die "converting en file to strings failed";
-
 
22
system "iconv -f utf-16 -t utf-8 '$td/en.uni' > '$td/en.txt'" || die "converting en strings to unicode failed";
-
 
23
 
-
 
24
$mode=0;
-
 
25
$mode=1 if ($ENV{MODE} eq 'plain');
-
 
26
 
17
open OUT, ">$td/strings";
27
open OUT, ">$td/strings";
18
while (<IN>) {
28
while (<IN>) {
19
    chomp;
29
    chomp;
20
    if (/\/\* Entry = \"(\d+)\.([a-zA-Z0-9.]+)\"; Class = \"(.*)\"/) {
-
 
21
	$id=$1; $item=$2; $cls=$3;
30
    if ($mode == 1) {
22
	$e = <IN>;
-
 
23
	chomp;
-
 
24
	if ($e =~ /^\"(.*)\" = \"(.*)\";$/) {
31
	if ($e =~ /^\"(.*)\" = \"(.*)\";$/) {
-
 
32
	    $v_en = $1;
-
 
33
	    $v_tl = $2;
-
 
34
	    if ($map{$v_en} ne '' && $map{$v_en} ne $v_tl) {
-
 
35
		print STDERR "WARNING: different translation for the same key \"$v_en\": \"$map{$v_en}\" and \"$v_tl\"\n";
-
 
36
	    } else {
-
 
37
		$map{$v_en} = $v_tl;
-
 
38
	    }
-
 
39
	} elsif ($_ ne '') {
-
 
40
	    print STDERR "WARNING: unknown line: $_\n";
-
 
41
	}
-
 
42
    } else {
-
 
43
	if (/\/\* Entry = \"(\d+)\.([a-zA-Z0-9.]+)\"; Class = \"(.*)\"/) {
-
 
44
	    $id=$1; $item=$2; $cls=$3;
-
 
45
	    $e = <IN>;
-
 
46
	    chomp;
-
 
47
	    if ($e =~ /^\"(.*)\" = \"(.*)\";$/) {
-
 
48
		$v_en = $1;
-
 
49
		$v_tl = $2;
-
 
50
		if ($map{$v_en} ne '' && $map{$v_en} ne $v_tl) {
-
 
51
		    print STDERR "WARNING: different translation for the same key \"$v_en\": \"$map{$v_en}\" and \"$v_tl\"\n";
-
 
52
		} else {
-
 
53
		    $map{$v_en} = $v_tl;
-
 
54
		}
25
	    print OUT "/* Class = \"$cls\"; $item = \"$2\"; ObjectID = \"$id\"; */\n\"$id.$item\" = \"$2\";\n\n";
55
#	    print OUT "/* Class = \"$cls\"; $item = \"$2\"; ObjectID = \"$id\"; */\n\"$id.$item\" = \"$2\";\n\n";
-
 
56
	    } else {
-
 
57
		print STDERR "WARNING: invalid entry for $id.$item: $e\n";
-
 
58
	    }
-
 
59
	} elsif ($_ ne '') {
-
 
60
	    print STDERR "WARNING: unknown line: $_\n";
-
 
61
	}
-
 
62
    }
-
 
63
}
-
 
64
close IN;
-
 
65
 
-
 
66
open IN, "$td/en.txt";
-
 
67
while (<IN>) {
-
 
68
    chomp;
-
 
69
    if (/^\"([a-zA-Z0-9.]+)\" = \"(.*)\";$/) {
-
 
70
	if ($map{$2}) {
-
 
71
	    print OUT "\"$1\" = \"$map{$2}\";\n";
-
 
72
	    $used{$2} = 1;
26
	} else {
73
	} else {
27
	    print STDERR "WARNING: invalid entry for $id.$item: $e\n";
74
	    print STDERR "WARNING: translation for \"$2\" not found.\n";
-
 
75
	    print OUT "$_\n";
28
	}
76
	}
-
 
77
	if (defined $cls) { $hc{$1} = $cls; undef $cls; }
-
 
78
    } elsif (/^\/\* Class = \"(.*?)\"; /) {
-
 
79
	print OUT "$_\n";
-
 
80
	$cls = $1;
29
    } elsif ($_ ne '') {
81
    } elsif ($_ eq '') {
-
 
82
	print OUT "\n";
-
 
83
	undef $cls;
-
 
84
    } else {
30
	print STDERR "WARNING: unknown line: $_\n";
85
	print STDERR "WARNING: unknown line: $_\n";
-
 
86
	print OUT "$_\n";
-
 
87
	undef $cls;
31
    }
88
    }
32
}
89
}
33
close IN;
90
close IN;
34
 
91
 
35
system "iconv -f utf-8 -t utf-16 '$td/strings' > '$td/strings.uni'" || die "converting strings to unicode failed";
92
system "iconv -f utf-8 -t utf-16 '$td/strings' > '$td/strings.uni'" || die "converting strings to unicode failed";
36
 
93
 
-
 
94
if ($ENV{STOP} ne '') {
-
 
95
    print "STOP requested, output is in $td\n";
-
 
96
    exit 0;
-
 
97
}
-
 
98
 
37
# system "ibtool --previous-file '$en' --incremental-file '$lo' --strings-file '$td/strings.uni' --localize-incremental --write '$tl' '$en'" || die "converting lang file to strings failed";
99
# system "ibtool --previous-file '$en' --incremental-file '$lo' --strings-file '$td/strings.uni' --localize-incremental --write '$tl' '$en'" || die "converting lang file to strings failed";
38
 
100
 
39
if ( -e "$td/strings.uni" ) {
101
if ( -e "$td/strings.uni" ) {
40
    system "ibtool --strings-file '$td/strings.uni' --write '$tl' '$en'" || die "generating lang nib failed";
102
    system "ibtool --strings-file '$td/strings.uni' --write '$tl' '$en'" || die "generating lang nib failed";
41
}
103
}
42
 
104
 
-
 
105
if ($ENV{KEEP} ne '') {
-
 
106
    print STDERR "KEEP set, leaving all files in $td\n";
-
 
107
    exit 0;
-
 
108
}
-
 
109
 
43
system "rm -rf '$td'";
110
system "rm -rf '$td'";