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;
push @{$config{wiki_file_prune_regexps}}, qr/\.pot$/;
# Translated versions of the underlays are added if available.
- foreach my $underlay ("basewiki", map { m/^\Q$config{underlaydirbase}\E\/*(.*)/ } reverse @{$config{underlaydirs}}) {
+ foreach my $underlay ("basewiki",
+ map { m/^\Q$config{underlaydirbase}\E\/*(.*)/ }
+ reverse @{$config{underlaydirs}}) {
next if $underlay=~/^locale\//;
- # Add underlay containing the pot files.
- #add_underlay("locale/pot/$underlay")
- # if -d "$config{underlaydirbase}/locale/pot/$underlay";
-
- # Add underlays containing the po files for slave languages.
+ # Underlays containing the po files for slave languages.
foreach my $ll (keys %{$config{po_slave_languages}}) {
- add_underlay("locale/mo/$underlay")
- if -d "$config{underlaydirbase}/locale/mo/$underlay";
+ add_underlay("po/$ll/$underlay")
+ if -d "$config{underlaydirbase}/po/$ll/$underlay";
}
if ($config{po_master_language}{code} ne 'en') {
&& 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) {
- debug(sprintf(gettext("rendering %s"), $file));
+ debug(sprintf(gettext("building %s"), $file));
IkiWiki::render($file);
}
}
my %params = @_;
if (istranslation($params{page})) {
- return gettext("Can not remove a translation. Removing the master page, ".
- "though, removes its translations as well.");
+ return gettext("Can not remove a translation. If the master page is removed, ".
+ "however, its translations will be removed as well.");
}
return undef;
}
# saved early in the renaming process.
my $orig_torename = $session->param("po_orig_torename");
unless (grep { $_ eq $masterpage } @{$orig_torename}) {
- return gettext("Can not rename a translation. Renaming the master page, ".
- "though, renames its translations as well.");
+ return gettext("Can not rename a translation. If the master page is renamed, ".
+ "however, its translations will be renamed as well.");
}
}
return undef;
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", "-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));
if ($res) {
return IkiWiki::SuccessReason->new("valid gettext data");
}
- return IkiWiki::FailReason->new("invalid gettext data, go back ".
- "to previous page to go on with edit");
+ return IkiWiki::FailReason->new(gettext("invalid gettext data, go back ".
+ "to previous page to continue edit"));
}
# ,----