#!/usr/bin/perl
# .po as a wiki page type
# Licensed under GPL v2 or greater
-# Copyright (C) 2008 intrigeri <intrigeri@boum.org>
+# Copyright (C) 2008-2009 intrigeri <intrigeri@boum.org>
# inspired by the GPL'd po4a-translate,
# which is Copyright 2002, 2003, 2004 by Martin Quinson (mquinson#debian.org)
package IkiWiki::Plugin::po;
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}})) {
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}) {
}
}
-# 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");
+ }
}
}
}
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).' %)';
}
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));
}
}
'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;
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");
}
# ,----