use Memoize;
my %translations;
+our %filtered;
memoize("istranslatable");
memoize("_istranslation");
memoize("percenttranslated");
}
# refresh/create POT and PO files as needed
+ my $updated_po_files=0;
foreach my $page (keys %pagesources) {
my $pageneedsbuild = grep { $_ eq $pagesources{$page} } @$needsbuild;
if (istranslatable($page)) {
push @pofiles, $pofile;
}
}
- refreshpofiles($file, @pofiles) if (@pofiles);
+ if (@pofiles) {
+ refreshpofiles($file, @pofiles) ;
+ map { IkiWiki::rcs_add($_); } @pofiles if ($config{rcs});
+ $updated_po_files = 1;
+ }
+ }
+ }
+
+ # check staged changes in and trigger a wiki refresh.
+ if ($updated_po_files) {
+ if ($config{rcs}) {
+ IkiWiki::disable_commit_hook();
+ IkiWiki::rcs_commit_staged(gettext("updated PO files"),
+ "refreshpofiles", "127.0.0.1");
+ IkiWiki::enable_commit_hook();
+ IkiWiki::rcs_update();
}
+ IkiWiki::refresh();
+ IkiWiki::saveindex();
+ %filtered=undef;
+ }
+
+ # refresh %translations, using istranslation's side-effect
+ # (not needed yet, but when newly created POT/PO files are
+ # added to %pagesources and other data structures, we'll need
+ # this)
+ foreach my $page (keys %pagesources) {
+ istranslation($page);
}
# make existing translations depend on the corresponding master page
return $link;
} #}}}
-our %filtered;
# We use filter to convert PO to the master page's type,
# since other plugins should not work on PO files
sub filter (@) { #{{{
url => urlto($translations{$masterpage}{$lang}, $page),
code => $lang,
language => $config{po_slave_languages}{$lang},
- percent => percenttranslated($page),
+ percent => percenttranslated($translations{$masterpage}{$lang}),
} unless ($lang eq $curlang);
}
}