po plugin: bugfix - only refresh POT/PO for translatable pages
[ikiwiki.git] / IkiWiki / Plugin / po.pm
index 900ca90e4ba6c22b66d1b10a99538f6747a93766..ca26101b7c52c9a1a4d6b7ce38e0100196eccea0 100644 (file)
@@ -105,7 +105,7 @@ sub refreshpot ($) { #{{{
        $doc->{TT}{utf_mode} = 1;
        $doc->{TT}{file_in_charset} = 'utf-8';
        $doc->{TT}{file_out_charset} = 'utf-8';
-       $doc->parse or error("[po/refreshpot:$masterfile]: failed to parse");
+       $doc->parse;
        $doc->writepo($potfile);
 } #}}}
 
@@ -138,14 +138,17 @@ sub needsbuild () { #{{{
                istranslation($page);
        }
 
+       # refresh POT and PO files as needed
        foreach my $file (@$needsbuild) {
                my $page=pagename($file);
-               refreshpot(srcfile($file)) if (istranslatable($page));
-               my @pofiles;
-               foreach my $lang (keys %{$translations{$page}}) {
-                       push @pofiles, $pagesources{$translations{$page}{$lang}};
+               if (istranslatable($page)) {
+                       refreshpot(srcfile($file));
+                       my @pofiles;
+                       foreach my $lang (keys %{$translations{$page}}) {
+                               push @pofiles, $pagesources{$translations{$page}{$lang}};
+                       }
+                       refreshpofiles(srcfile($file), map { srcfile($_) } @pofiles);
                }
-               refreshpofiles(srcfile($file), map { srcfile($_) } @pofiles);
        }
 } #}}}