]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - IkiWiki/Plugin/po.pm
po: Fix copy of po file from underlay when editing
[git.ikiwiki.info.git] / IkiWiki / Plugin / po.pm
index 434d9cf4f1a640436b0c6818fae22fbac1070fc9..e9dc9dd8cfc2ba7dd0ed5291434c48a795bde50a 100644 (file)
@@ -376,11 +376,11 @@ sub change (@) {
            && exists $config{meta_overrides_page_title}
            && defined $config{meta_overrides_page_title}
            && $config{meta_overrides_page_title}) {
            && exists $config{meta_overrides_page_title}
            && defined $config{meta_overrides_page_title}
            && $config{meta_overrides_page_title}) {
-               debug(sprintf(gettext("re-rendering all pages to fix meta titles")));
+               debug(sprintf(gettext("rebuilding all pages to fix meta titles")));
                resetalreadyfiltered();
                require IkiWiki::Render;
                foreach my $file (@rendered) {
                resetalreadyfiltered();
                require IkiWiki::Render;
                foreach my $file (@rendered) {
-                       debug(sprintf(gettext("rendering %s"), $file));
+                       debug(sprintf(gettext("building %s"), $file));
                        IkiWiki::render($file);
                }
        }
                        IkiWiki::render($file);
                }
        }
@@ -827,8 +827,23 @@ sub refreshpofiles ($@) {
 
        foreach my $pofile (@pofiles) {
                IkiWiki::prep_writefile(basename($pofile),dirname($pofile));
 
        foreach my $pofile (@pofiles) {
                IkiWiki::prep_writefile(basename($pofile),dirname($pofile));
+
+               if (! -e $pofile) {
+                       # If the po file exists in an underlay, copy it
+                       # from there.
+                       my ($pobase)=$pofile=~/^\Q$config{srcdir}\E\/?(.*)$/;
+                       foreach my $dir (@{$config{underlaydirs}}) {
+                               if (-e "$dir/$pobase") {
+                                       File::Copy::syscopy("$dir/$pobase",$pofile)
+                                               or error("po(refreshpofiles) ".
+                                                        sprintf(gettext("failed to copy underlay PO file to %s"),
+                                                                $pofile));
+                               }
+                       }
+               }
+
                if (-e $pofile) {
                if (-e $pofile) {
-                       system("msgmerge", "-q", "-U", "--backup=none", $pofile, $potfile) == 0
+                       system("msgmerge", "--previous", "-q", "-U", "--backup=none", $pofile, $potfile) == 0
                                or error("po(refreshpofiles) ".
                                         sprintf(gettext("failed to update %s"),
                                                 $pofile));
                                or error("po(refreshpofiles) ".
                                         sprintf(gettext("failed to update %s"),
                                                 $pofile));