X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/3d27dac8098957024b8e4c6ee815536fe81e8d18..036f4f367d092b5017e1deb4cd95480ac1171da7:/IkiWiki/Plugin/po.pm diff --git a/IkiWiki/Plugin/po.pm b/IkiWiki/Plugin/po.pm index 0ae4adcfc..aa3d72b90 100644 --- a/IkiWiki/Plugin/po.pm +++ b/IkiWiki/Plugin/po.pm @@ -10,7 +10,12 @@ use warnings; use strict; use IkiWiki 3.00; use Encode; -use Locale::Po4a::Common qw(nowrapi18n !/.*/); +eval q{use Locale::Po4a::Common qw(nowrapi18n !/.*/)}; +if ($@) { + print STDERR gettext("warning: Old po4a detected! Recommend upgrade to 0.35.")."\n"; + eval q{use Locale::Po4a::Common qw(!/.*/)}; + die $@ if $@; +} use Locale::Po4a::Chooser; use Locale::Po4a::Po; use File::Basename; @@ -94,7 +99,7 @@ sub getsetup () { type => "string", example => { 'fr' => 'Français', - 'es' => 'Castellano', + 'es' => 'Español', 'de' => 'Deutsch' }, description => "slave languages (PO files)", @@ -279,17 +284,16 @@ sub pagetemplate (@) { map add_depends($page, $_), (values %{otherlanguages($page)}); } if ($config{discussion} && istranslation($page)) { - my $discussionlink=gettext("discussion"); - if ($page !~ /.*\/\Q$discussionlink\E$/i && + if ($page !~ /.*\/\Q$config{discussionpage}\E$/i && (length $config{cgiurl} || - exists $links{$masterpage."/".$discussionlink})) { + exists $links{$masterpage."/".lc($config{discussionpage})})) { $template->param('discussionlink' => htmllink( $page, $destpage, - $masterpage . '/' . gettext("Discussion"), + $masterpage . '/' . $config{discussionpage}, noimageinline => 1, forcesubpage => 0, - linktext => gettext("Discussion"), + linktext => $config{discussionpage}, )); } } @@ -827,6 +831,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) ". @@ -915,7 +934,7 @@ sub otherlanguagesloop ($) { master => 1, }; } - else { + elsif (istranslation($otherpage)) { push @ret, { url => urlto_with_orig_beautiful_urlpath($otherpage, $page), code => $lang,