summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Hess <joey@gnu.kitenet.net>2009-08-10 15:59:32 -0400
committerJoey Hess <joey@gnu.kitenet.net>2009-08-10 15:59:32 -0400
commit83480665c256a344900fc817bcb4618f8db9aeee (patch)
tree66802a72ed34822670326bad48bf270161a37850
parent8c4325d2ceb50533cea01128d119ff19fba2ea44 (diff)
po: Fix copy of po file from underlay when editing
When first editing a page that was in the underlay, avoid losing the translation by copying the po file over from the underlay.
-rw-r--r--IkiWiki/Plugin/po.pm15
-rw-r--r--doc/plugins/po.mdwn11
2 files changed, 15 insertions, 11 deletions
diff --git a/IkiWiki/Plugin/po.pm b/IkiWiki/Plugin/po.pm
index 0ae4adcfc..e9dc9dd8c 100644
--- a/IkiWiki/Plugin/po.pm
+++ b/IkiWiki/Plugin/po.pm
@@ -827,6 +827,21 @@ sub refreshpofiles ($@) {
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) {
system("msgmerge", "--previous", "-q", "-U", "--backup=none", $pofile, $potfile) == 0
or error("po(refreshpofiles) ".
diff --git a/doc/plugins/po.mdwn b/doc/plugins/po.mdwn
index 0c8110563..2fbf67016 100644
--- a/doc/plugins/po.mdwn
+++ b/doc/plugins/po.mdwn
@@ -277,17 +277,6 @@ That used to be so, but the bug was fixed. Does this mean
that po might be replacing the only link on a page, in error?
--[[Joey]]
-Bug when editing underlay file
-------------------------------
-
-While I've gotten translated underlays working, there is a bug
-if the wiki is currently using a page from the underlay, and the master
-language version is edited. This causes the edited page to be saved
-to srcdir.. and all the translations get set to 0% and their
-po files have the translated strings "emptied". What's really going on
-is that these are entirely new po files not based on the old ones
-in the basewiki, and thus lacking translations. --[[Joey]]
-
Documentation
-------------