gimp/po-script-fu/script-fu-xgettext

53 lines
1.2 KiB
Perl
Executable File

#!/usr/bin/perl
# a lame attempt at xgettext for scheme
# adapted from pxgettext as found in the plug-ins/perl directory
# TODO:
# proper linenumbers
# There are rumors that perl version 5.005_02 has a bug
# resulting in an endless loop and a memory leak in the
# regex machinery.
#
# It seems to work however. I'll leave this check commented out until
# people report problems.
#
# die ("Your version of Perl (5.005_02) is broken!\nCan't extract the strings from the scripts.\nA lot of messages will be missing from your gimp-script-fu.pot file.\n\n") if $] eq 5.005_02;
undef $/;
my $file;
my $fileposition;
my $e;
my $s;
while (<>) {
$file = $ARGV;
$file =~ s/\.\.\///;
while (/_\(?"((?:[^"\\]+|\\.)*)"\)?/sg) {
my $s = $1;
if ($s =~ /\n/) {
$e = "msgid \"\"\n";
for (split /\n/, $s) {
$e .= "\"$_\\n\"\n";
}
} else {
$e = "msgid \"$s\"\n";
}
$e .= "msgstr \"\"\n";
$fileposition = "#: $file:0\n";
push @{$entry{$e}}, $fileposition;
}
}
foreach $e (sort keys %entry) {
print @{$entry{$e}};
print $e;
print "\n";
}