X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/58c77a01f79efaa5692fd30231695c6f8775a7d9..1d767625178380c6b760b9ea4bb41a11a7c95d53:/IkiWiki/Plugin/po.pm diff --git a/IkiWiki/Plugin/po.pm b/IkiWiki/Plugin/po.pm index 43b36430f..1dcec7bec 100644 --- a/IkiWiki/Plugin/po.pm +++ b/IkiWiki/Plugin/po.pm @@ -16,6 +16,7 @@ use File::Temp; use Memoize; my %translations; +our %filtered; memoize("istranslatable"); memoize("_istranslation"); memoize("percenttranslated"); @@ -151,6 +152,7 @@ sub needsbuild () { #{{{ } # 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)) { @@ -165,8 +167,34 @@ sub needsbuild () { #{{{ 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 @@ -224,7 +252,6 @@ sub tweakbestlink ($$) { #{{{ 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 (@) { #{{{