Make the generated pot file (i.e., result of "create") look more "real",

but using msgmerge to reformat the output
This commit is contained in:
acli 2005-01-23 10:51:16 +00:00
parent 4d711b3dba
commit 768262ccff
1 changed files with 31 additions and 6 deletions

View File

@ -262,16 +262,41 @@ if ($action eq 'create') {
unlink $str_file || die "$str_file: $!\n";
}
die "$str_file: Output file already exists\n" if -f $str_file;
my($tmph, $tmpfile) = tmpnam();
my($tmph1, $tmpfile1) = tmpnam();
my($tmph2, $tmpfile2) = tmpnam();
close $tmph2; # We just want a name
# Generate the temporary file that acts as <MODULE>/POTFILES.in
for my $input (@in_files) {
print $tmph "$input\n";
print $tmph1 "$input\n";
}
close $tmph;
close $tmph1;
# Generate the specified po file ($str_file)
$st = system ($xgettext, '-s', '-f', $tmpfile, '-o', $str_file);
warn_normal "Text extraction failed: $xgettext: $!\n", undef if $st != 0;
# unlink $tmpfile || warn_normal "$tmpfile: unlink failed: $!\n", undef;
$st = system ($xgettext, '-s', '-f', $tmpfile1, '-o', $tmpfile2);
# Run msgmerge so that the pot file looks like a real pot file
# We need to help msgmerge a bit by pre-creating a dummy po file that has
# the headers and the "" msgid & msgstr. It will fill in the rest.
if ($st == 0) {
# Merge the temporary "pot file" with the specified po file ($str_file)
# FIXME: msgmerge(1) is a Unix dependency
# FIXME: need to check the return value
unless (-f $str_file) {
local(*INPUT, *OUTPUT);
open(INPUT, "<$tmpfile2");
open(OUTPUT, ">$str_file");
while (<INPUT>) {
print OUTPUT;
last if /^\n/s;
}
close INPUT;
close OUTPUT;
}
$st = system('msgmerge', '-U', '-s', $str_file, $tmpfile2);
} else {
error_normal "Text extraction failed: $xgettext: $!\n", undef;
error_additional "Will not run msgmerge\n", undef;
}
# unlink $tmpfile1 || warn_normal "$tmpfile1: unlink failed: $!\n", undef;
# unlink $tmpfile2 || warn_normal "$tmpfile2: unlink failed: $!\n", undef;
} elsif ($action eq 'update') {
my($tmph1, $tmpfile1) = tmpnam();