use strict;
use IkiWiki 3.00;
use Encode;
-use Locale::Po4a::Common qw(nowrapi18n);
+use Locale::Po4a::Common qw(nowrapi18n !/.*/);
use Locale::Po4a::Chooser;
use Locale::Po4a::Po;
use File::Basename;
hook(type => "getsetup", id => "po", call => \&getsetup);
hook(type => "checkconfig", id => "po", call => \&checkconfig);
hook(type => "needsbuild", id => "po", call => \&needsbuild);
- hook(type => "scan", id => "po", call => \&scan, last =>1);
+ hook(type => "scan", id => "po", call => \&scan, last => 1);
hook(type => "filter", id => "po", call => \&filter);
hook(type => "htmlize", id => "po", call => \&htmlize);
hook(type => "pagetemplate", id => "po", call => \&pagetemplate, last => 1);
! defined $config{po_link_to}) {
$config{po_link_to}='default';
}
- elsif (! grep {
- $config{po_link_to} eq $_
- } ('default', 'current', 'negotiated')) {
+ elsif ($config{po_link_to} !~ /^(default|current|negotiated)$/) {
warn(sprintf(gettext('%s is not a valid value for po_link_to, falling back to po_link_to=default'),
$config{po_link_to}));
$config{po_link_to}='default';
$template->param(otherlanguages => [otherlanguagesloop($page)]);
map add_depends($page, $_), (values %{otherlanguages($page)});
}
- # Rely on IkiWiki::Render's genpage() to decide wether
- # a discussion link should appear on $page; this is not
- # totally accurate, though: some broken links may be generated
- # when cgiurl is disabled.
- # This compromise avoids some code duplication, and will probably
- # prevent future breakage when ikiwiki internals change.
- # Known limitations are preferred to future random bugs.
- if ($template->param('discussionlink') && istranslation($page)) {
- $template->param('discussionlink' => htmllink(
- $page,
- $destpage,
- $masterpage . '/' . gettext("Discussion"),
- noimageinline => 1,
- forcesubpage => 0,
- linktext => gettext("Discussion"),
+ if ($config{discussion} && istranslation($page)) {
+ my $discussionlink=gettext("discussion");
+ if ($page !~ /.*\/\Q$discussionlink\E$/i &&
+ (length $config{cgiurl} ||
+ exists $links{$masterpage."/".$discussionlink})) {
+ $template->param('discussionlink' => htmllink(
+ $page,
+ $destpage,
+ $masterpage . '/' . gettext("Discussion"),
+ noimageinline => 1,
+ forcesubpage => 0,
+ linktext => gettext("Discussion"),
));
+ }
}
# Remove broken parentlink to ./index.html on home page's translations.
# It works because this hook has the "last" parameter set, to ensure it
} # }}}
# Add the renamed page translations to the list of to-be-renamed pages.
-sub renamepages(@) {
+sub renamepages (@) {
my %params = @_;
my %torename = %{$params{torename}};
return @ret;
}
-sub mydelete(@) {
+sub mydelete (@) {
my @deleted=@_;
map { deletetranslations($_) } grep istranslatablefile($_), @deleted;
}
-sub change(@) {
+sub change (@) {
my @rendered=@_;
# All meta titles are first extracted at scan time, i.e. before we turn
# PO files breaks the meta plugin's parsing enough to save ugly titles
# to %pagestate at this time.
#
- # Then, at render time, every page's passes on row through the Great
+ # Then, at render time, every page passes in turn through the Great
# Rendering Chain (filter->preprocess->linkify->htmlize), and the meta
# plugin's preprocess hook is this time in a position to correctly
# extract the titles from slave pages.
#
- # This is, unfortunately, too late: if the page A, linking to the page B,
- # is rendered before B, it will display the wrongly-extracted meta title
- # as the link text to B.
+ # This is, unfortunately, too late: if the page A, linking to the page
+ # B, is rendered before B, it will display the wrongly-extracted meta
+ # title as the link text to B.
#
# On the one hand, such a corner case only happens on rebuild: on
# refresh, every rendered page is fixed to contain correct meta titles.
my $file=shift;
return 0 unless defined $file;
- return 0 if defined pagetype($file) && pagetype($file) eq 'po';
+ my $type=pagetype($file);
+ return 0 if ! defined $type || $type eq 'po';
return 0 if $file =~ /\.pot$/;
return 0 unless -e "$config{srcdir}/$file"; # underlay dirs may be read-only
return 1 if pagespec_match(pagename($file), $config{po_translatable_pages});
$doc->{TT}{file_in_charset} = 'utf-8';
$doc->{TT}{file_out_charset} = 'utf-8';
$doc->read($masterfile);
- # let's cheat a bit to force porefs option to be passed to Locale::Po4a::Po;
- # this is undocument use of internal Locale::Po4a::TransTractor's data,
- # compulsory since this module prevents us from using the porefs option.
+ # let's cheat a bit to force porefs option to be passed to
+ # Locale::Po4a::Po; this is undocument use of internal
+ # Locale::Po4a::TransTractor's data, compulsory since this module
+ # prevents us from using the porefs option.
$doc->{TT}{po_out}=Locale::Po4a::Po->new({ 'porefs' => 'none' });
$doc->{TT}{po_out}->set_charset('utf-8');
# do the actual work
foreach my $pofile (@pofiles) {
IkiWiki::prep_writefile(basename($pofile),dirname($pofile));
if (-e $pofile) {
- system("msgmerge", "-U", "--backup=none", $pofile, $potfile) == 0
+ system("msgmerge", "-q", "-U", "--backup=none", $pofile, $potfile) == 0
or error("po(refreshpofiles) ".
sprintf(gettext("failed to update %s"),
$pofile));