[i18n] Update translation generation script

The script doesn't include code snippets in the pot file now, as they
made it huge and wheren't very useful. The $fold and $function name
are included in the reference instead of normal comments.

A hash has been added to manage translatable strings that can't be
automatically detected.
This commit is contained in:
Daniel "GDrooid" Rodriguez 2015-02-08 19:27:40 +01:00
parent 15ff5abe61
commit 85fff8a95b

View File

@ -26,18 +26,25 @@ msgstr ""
my @blacklist = ('"--"', '"\\\\000"', '`.*`', '$\(.*\)');
# Translatable strings that can't be automatically detected yet
my %undetectable = (
124 => '[sudo] Enter password for user ::1 user:: to gain superuser privileges'
);
open my $handle, $FILE or die "Failed to open $FILE";
my @lines = <$handle>;
close $handle;
my %seen;
my @ignored;
my $index = 0;
my $fold;
my $func;
my $force;
my $str;
foreach (@lines) {
$index++;
$force = 0;
# It's a fold title
if (m/^# +{{{ +(.*)$/) {
@ -51,44 +58,28 @@ foreach (@lines) {
next;
}
# Force if it's undetectable
$force = 1 if exists($undetectable{$index});
# Next if there is no print function
next unless m/$FUNCPATTERN +$STRINGPATTERN/;
next unless $force or m/$FUNCPATTERN +$STRINGPATTERN/;
# Get string from the $undetectable hash or via regex
if ($force) {
$str = "\"$undetectable{$index}\"";
}
else {
$str = $2;
}
# Next if it was seen before
$seen{$2}++;
next if $seen{$2} > 1;
$seen{$str}++;
next if $seen{$str} > 1;
# Next if it's blacklisted
if (grep {$2 =~ m/$_/} @blacklist) {
push @ignored, $2;
next;
}
next if grep {$str =~ m/$_/} @blacklist;
print "#. Fold: $fold\n";
print "#. Function: $func\n";
print "#.\n";
print "#. Code sample:\n";
my $sign = ' ';
for (-7..3) {
if($_ == -1) {
$sign = '>';
}
else {
$sign = ' ';
}
my $n = $index + $_;
print "#. $sign $lines[$n]";
}
print "#: tomb:$index\n";
print "msgid $2\n";
print "#: tomb:$fold:$func:$index\n";
print "msgid $str\n";
print "msgstr \"\"\n\n";
}
print STDERR "-- IGNORED\n";
foreach (@ignored) {
print STDERR "$_\n";
}