18 if (my $txt = $tab{$key1}{$key2}){
29 if (my $txt = $tab{$key1}{$key2}){
30 my $txt = $tab{$key1}{$key2};
32 my @key = split /\$/, "$txt";
33 if ( @key == 2 ){ # Text contains only one var, I assume $1
35 return "vsprintf(_(\"$txt\"), $extra)";
36 } else { # Text contains several vars, should be possible to deal with if array() is detected
37 return "TODOBETTERvsprintf(_(\"$txtsave\"), $extra)";
45 if ($verbose > 1) {print "Reading alltab.txt\n"};
46 open(FILE, "<", "alltab.txt") or die "Can't open alltab.txt: $!";
47 my $re = "^(.[^ ]*) (.[^ ]*) (.*)";
50 $tab{"$1"}{"$2"}="$3";
60 open(FILE, "<", $filename) or die "Can't open $filename: $!";
62 my ($buf, $data, $n); while (($n = read FILE, $data, 1000000) != 0) {if($verbose > 5){print "$n bytes read\n"}; $buf .= $data; } close(FILE);
64 $buf =~ s{\QLanguage->getText\E}{GLOBALS['Language']->getText}sg;
66 my $re = qr{ ( # paren group 1 (full function)
67 \QGLOBALS['Language']->getText\E
68 ( # paren group 2 (parens)
70 ( # paren group 3 (contents of parens)
72 (?> [^()]+ ) # Non-parens without backtracking
74 (?2) # Recurse to start of paren group 2
82 my (@key,$instr,$outstr,$extra,$params,$thrdparam,$cnt);
83 while ($buf =~ /$re/g) {
87 @key = split /,\s*/, "$params";
90 if ($verbose > 5) {print "=($cnt)= $instr ==> FUNC ERROR (too few args ) === \n"};
95 if($outstr=findtxt2($key[0],$key[1])){
96 if ($verbose > 5) {print "=($cnt)= $instr ==> $outstr === \n"};
97 $buf =~ s{\$\Q$instr\E}{$outstr}s;
99 if ($verbose > 5) {print "=($cnt)= $instr ==> TRANSLATION NOT FOUND === \n"};
105 $thrdparam = $params;
106 $thrdparam =~ s/.[^,]*,.[^,]*,//;
107 if ($outstr=findtxt3($key[0],$key[1],$thrdparam)){
108 if ($verbose > 5) {print "=($cnt)= $instr ==> $outstr === \n"};
109 if ($verbose > 10) {print "=(*)= thrdparam ==> $thrdparam === \n"};
110 $buf =~ s{\$\Q$instr\E}{$outstr}s;
112 if ($verbose > 5) {print "=($cnt)= $instr ==> TRANSLATION NOT FOUND === \n"};
118 $thrdparam = $params;
119 $thrdparam =~ s/.[^,]*,.[^,]*,//;
120 if($outstr=findtxt3($key[0],$key[1],$thrdparam)){
121 if ($verbose > 5) {print "=($cnt)= $instr ==> FUNC ERROR (too many args) === \n"};
122 if ($verbose > 10) {print "=(*)= outstr ==> $outstr === \n"};
123 if ($verbose > 10) {print "=(*)= extra ==> $extra === \n"};
124 if ($verbose > 10) {print "=(*)= params ==> $params === \n"};
125 if ($verbose > 10) {print "=(*)= thrdparam ==> $thrdparam === \n"};
126 $buf =~ s{\$\Q$instr\E}{$outstr}s;
128 if ($verbose > 5) {print "=($cnt)= $instr ==> TRANSLATION NOT FOUND === \n"};
135 if ($verbose > 10) {print "$buf\n"};
139 if ( ! -f "alltab.txt" ){
140 system("find . -name '*.tab' | grep -v '.svn' | grep en_US | xargs cat > alltab.txt");
146 if ($verbose > 1) {print "Reading $File::Find::name\n";}
147 my $buf=tab2gettextfile($filename);
149 if ($verbose > 1) {print "Writing $filename\n";}
150 open(FILEOUT, '>', "$filename") or die "Can't write $filename: $!";
157 my %h = ('verbose' => \$verbose, 'filename' => \$filename, 'write' => \$write, 'recursive' => \$recursive);
158 GetOptions (\%h, 'verbose=i', 'filename=s', 'write', 'recursive');
162 #if ( exists $h{filename} ) {
164 if ($verbose > 1) {print "Reading $filename\n"};
165 my $buf=tab2gettextfile($filename);
167 if ($verbose > 1) {print "Writing $filename\n";}
168 open(FILEOUT, '>', "$filename") or die "Can't write $filename: $!";