#!/usr/bin/perl my %defstr, $k, $uname, $name, $new, $pref; open NRS, "<../lang/C.i18n" || die; { my $neu = 0; sub NewNumber () { if (!$neu) { while () { chomp; if (m/^([0-9][0-9][0-9][0-9]):/) { if ($1 != 9999) { $neu = $1; } } } } $neu ++; return $neu; }} %defstr = {}; print "Numbering new translation entries.\n"; while ($uname = shift) { $name = "../src/$uname"; stat "$name~" && next; stat "$name" || next; open IN, "<$name" || die; $match = 0; while () { $match = 1 if (m/i18n \(##*, "(([^"]*(\")*)*)"\)/); } next if not $match; print "$uname "; $nl = "\n"; rename ($name, "$name~"); open IN, "<$name~" || die; open OUT, ">$name" || die; while () { $k = $_; chomp ($k); while ($k =~ m/i18n \(##*,((("(([^\"]*(\\.)*)*)")*(COL(NONE|CONTACT|CLIENT|MESS|SERV|ACK|SENT))* *)*)\)/) { $new = $1; $new =~ s/\\/\\\\/g; $new =~ s/\(/\\(/g; $new =~ s/\)/\\)/g; $new =~ s/\./\\./g; $new =~ s/\[/\\[/g; $new =~ s/\]/\\]/g; $new =~ s/\|/\\|/g; $new =~ s/\+/\\+/g; $new =~ s/\*/\\*/g; $new =~ s/\?/\\?/g; $new =~ s/\"/"/g; print $nl; $nl = ""; if (not defined $defstr{$new}) { $i = NewNumber (); $defstr{$new} = $i; print ("New translation: $i:$new\n"); } $l = $k; foreach $i (keys %defstr) { $k =~ s/i18n \(##*,($i)\)/i18n ($defstr{$i},$1)/g; } if (not $k cmp $l) { print "Line loops: $k"; last; } else { print "Line was: $l\n"; print "Line is: $k\n"; } } print OUT "$k\n"; } } print $nl . "Finished.\n";