X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/da26603e0780b3079ee8e94ec3651fdc615cc3f9..7ca396d6eebdc055b946cae70cb3c1ac9d3252fa:/IkiWiki/Plugin/po.pm diff --git a/IkiWiki/Plugin/po.pm b/IkiWiki/Plugin/po.pm index 7cec589ab..157575483 100644 --- a/IkiWiki/Plugin/po.pm +++ b/IkiWiki/Plugin/po.pm @@ -128,7 +128,8 @@ sub getsetup () { sub checkconfig () { foreach my $field (qw{po_master_language po_slave_languages}) { if (! exists $config{$field} || ! defined $config{$field}) { - error(sprintf(gettext("Must specify %s when using the %s plugin"), $field, 'po')); + error(sprintf(gettext("Must specify %s when using the %s plugin"), + $field, 'po')); } } if (! (keys %{$config{po_slave_languages}})) { @@ -150,8 +151,8 @@ sub checkconfig () { elsif (! grep { $config{po_link_to} eq $_ } ('default', 'current', 'negotiated')) { - warn(sprintf(gettext('po_link_to=%s is not a valid setting, falling back to po_link_to=default'), - $config{po_link_to})); + 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'; } elsif ($config{po_link_to} eq "negotiated" && ! $config{usedirs}) { @@ -474,28 +475,32 @@ sub formbuilder_setup (@) { } } -# Do not allow to create pages of type po: they are automatically created. -# The main reason to do so is to bypass the "favor the type of linking page -# on page creation" logic, which is unsuitable when a broken link is clicked -# on a slave (PO) page. sub formbuilder (@) { my %params=@_; my $form=$params{form}; my $q=$params{cgi}; - return unless (defined $form->field("do") && $form->field("do") eq "create"); + return unless defined $form->field("do"); - for my $field ($form->field) { - next unless "$field" eq "type"; - if ($field->type eq 'select') { - # remove po from the types list - my @types = grep { $_ ne 'po' } $field->options; - $field->options(\@types) if scalar @types; - } - else { - # make sure the default value is not po; - # does this case actually happen? - debug sprintf("po(formbuilder) type field is not select - not implemented yet"); + # Do not allow to create pages of type po: they are automatically created. + # The main reason to do so is to bypass the "favor the type of linking page + # on page creation" logic, which is unsuitable when a broken link is clicked + # on a slave (PO) page. + # This cannot be done in the formbuilder_setup hook as the list of types is + # computed later. + if ($form->field("do") eq "create") { + for my $field ($form->field) { + next unless "$field" eq "type"; + if ($field->type eq 'select') { + # remove po from the list of types + my @types = grep { $_ ne 'po' } $field->options; + $field->options(\@types) if scalar @types; + } + else { + # make sure the default value is not po; + # does this case actually happen? + debug "po(formbuilder) ".gettext("type field is not select - not implemented yet"); + } } } } @@ -588,6 +593,9 @@ sub mynicepagetitle ($;$) { my $res = $origsubs{'nicepagetitle'}->($page, $unescaped); return $res unless istranslation($page); return $res unless $config{po_translation_status_in_links}; + my @caller = caller(1); + return $res if (exists $caller[3] && defined $caller[3] + && $caller[3] eq "IkiWiki::Plugin::parentlinks::parentlinks"); return $res.' ('.percenttranslated($page).' %)'; } @@ -784,19 +792,21 @@ sub refreshpofiles ($@) { my $potfile=potfile($masterfile); (-e $potfile) - or error(sprintf(gettext("po(refreshpofiles) POT file (%s) does not exist"), - $potfile)); + or error("po(refreshpofiles) ".sprintf(gettext("POT file (%s) does not exist"), + $potfile)); foreach my $pofile (@pofiles) { IkiWiki::prep_writefile(basename($pofile),dirname($pofile)); if (-e $pofile) { system("msgmerge", "-U", "--backup=none", $pofile, $potfile) == 0 - or error(sprintf(gettext("po(refreshpofiles) failed to update %s"), + or error("po(refreshpofiles) ". + sprintf(gettext("failed to update %s"), $pofile)); } else { File::Copy::syscopy($potfile,$pofile) - or error(sprintf(gettext("po(refreshpofiles) failed to copy the POT file to %s"), + or error("po(refreshpofiles) ". + sprintf(gettext("failed to copy the POT file to %s"), $pofile)); } } @@ -844,8 +854,8 @@ sub percenttranslated ($) { 'file_in_name' => [ $masterfile ], 'file_in_charset' => 'utf-8', 'file_out_charset' => 'utf-8', - ) or error(sprintf(gettext("po(percenttranslated) failed to translate %s"), - $page)); + ) or error("po(percenttranslated) ". + sprintf(gettext("failed to translate %s"), $page)); my ($percent,$hit,$queries) = $doc->stats(); $percent =~ s/\.[0-9]+$//; return $percent; @@ -1050,7 +1060,8 @@ sub isvalidpo ($) { if ($res) { return IkiWiki::SuccessReason->new("valid gettext data"); } - return IkiWiki::FailReason->new("invalid gettext data"); + return IkiWiki::FailReason->new("invalid gettext data, go back ". + "to previous page to go on with edit"); } # ,----