From 1d767625178380c6b760b9ea4bb41a11a7c95d53 Mon Sep 17 00:00:00 2001 From: intrigeri Date: Wed, 15 Oct 2008 06:47:06 +0200 Subject: po plugin: initial implementation of automatic POT/PO update The updated or created PO files are put under version control. Signed-off-by: intrigeri --- IkiWiki/Plugin/po.pm | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) (limited to 'IkiWiki/Plugin/po.pm') diff --git a/IkiWiki/Plugin/po.pm b/IkiWiki/Plugin/po.pm index 62a2aa3db..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,26 @@ 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 @@ -232,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 (@) { #{{{ -- cgit v1.2.3