From: joey
Date: Thu, 15 Feb 2007 02:22:08 +0000 (+0000)
Subject: * Many changes to make ikiwiki very resistant to write failures
X-Git-Tag: 1.43~58
X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=d4c61b72813b880d86b316770f2e3819a6428202;p=ikiwiki.git
* Many changes to make ikiwiki very resistant to write failures
including out of disk space situations. ikiwiki should never leave
truncated files, and if the error occurs during a web-based file edit,
the user will be given an opportunity to retry.
Inspired by the many ways Moin Moin destroys itself when out of disk. :-)
* Fix syslogging of errors.
---
diff --git a/IkiWiki.pm b/IkiWiki.pm
index b605ac370..8f037ed04 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -28,7 +28,8 @@ my $installdir=''; # INSTALLDIR_AUTOREPLACE done by Makefile, DNE
our $version='unknown'; # VERSION_AUTOREPLACE done by Makefile, DNE
sub defaultconfig () { #{{{
- wiki_file_prune_regexps => [qr/\.\./, qr/^\./, qr/\/\./, qr/\.x?html?$/,
+ wiki_file_prune_regexps => [qr/\.\./, qr/^\./, qr/\/\./,
+ qr/\.x?html?$/, qr/\.ikiwiki-new$/,
qr/(^|\/).svn\//, qr/.arch-ids\//, qr/{arch}\//],
wiki_link_regexp => qr/\[\[(?:([^\]\|]+)\|)?([^\s\]]+)\]\]/,
wiki_file_regexp => qr/(^[-[:alnum:]_.:\/+]+$)/,
@@ -142,14 +143,19 @@ sub loadplugin ($) { #{{{
}
} #}}}
-sub error ($) { #{{{
+sub error ($;$) { #{{{
+ my $message=shift;
+ my $cleaner=shift;
if ($config{cgi}) {
print "Content-type: text/html\n\n";
print misctemplate(gettext("Error"),
- "".gettext("Error").": @_
");
+ "".gettext("Error").": $message
");
}
- log_message(error => @_);
- exit(1);
+ log_message(debug => $message) if $config{syslog};
+ if (defined $cleaner) {
+ $cleaner->();
+ }
+ die $message."\n";
} #}}}
sub debug ($) { #{{{
@@ -246,7 +252,7 @@ sub readfile ($;$$) { #{{{
binmode(IN) if ($binary);
return \*IN if $wantfd;
my $ret=;
- close IN;
+ close IN || error("failed to read $file: $!");
return $ret;
} #}}}
@@ -255,7 +261,7 @@ sub writefile ($$$;$$) { #{{{
my $destdir=shift; # directory to put file in
my $content=shift;
my $binary=shift;
- my $wantfd=shift;
+ my $writer=shift;
my $test=$file;
while (length $test) {
@@ -264,8 +270,12 @@ sub writefile ($$$;$$) { #{{{
}
$test=dirname($test);
}
+ my $newfile="$destdir/$file.ikiwiki-new";
+ if (-l $newfile) {
+ error("cannot write to a symlink ($newfile)");
+ }
- my $dir=dirname("$destdir/$file");
+ my $dir=dirname($newfile);
if (! -d $dir) {
my $d="";
foreach my $s (split(m!/+!, $dir)) {
@@ -275,12 +285,19 @@ sub writefile ($$$;$$) { #{{{
}
}
}
-
- open (OUT, ">$destdir/$file") || error("failed to write $destdir/$file: $!");
+
+ my $cleanup = sub { unlink($newfile) };
+ open (OUT, ">$newfile") || error("failed to write $newfile: $!", $cleanup);
binmode(OUT) if ($binary);
- return \*OUT if $wantfd;
- print OUT $content;
- close OUT;
+ if ($writer) {
+ $writer->(\*OUT, $cleanup);
+ }
+ else {
+ print OUT $content || error("failed writing to $newfile: $!", $cleanup);
+ }
+ close OUT || error("failed saving $newfile: $!", $cleanup);
+ rename($newfile, "$destdir/$file") ||
+ error("failed renaming $newfile to $destdir/$file: $!", $cleanup);
} #}}}
my %cleared;
@@ -577,7 +594,7 @@ sub lockwiki () { #{{{
debug("wiki seems to be locked, waiting for lock");
my $wait=600; # arbitrary, but don't hang forever to
# prevent process pileup
- for (1..600) {
+ for (1..$wait) {
return if flock(WIKILOCK, 2 | 4);
sleep 1;
}
@@ -626,8 +643,9 @@ sub saveindex () { #{{{
if (! -d $config{wikistatedir}) {
mkdir($config{wikistatedir});
}
- open (OUT, ">$config{wikistatedir}/index") ||
- error("cannot write to $config{wikistatedir}/index: $!");
+ my $newfile="$config{wikistatedir}/index.new";
+ my $cleanup = sub { unlink($newfile) };
+ open (OUT, ">$newfile") || error("cannot write to $newfile: $!", $cleanup);
foreach my $page (keys %oldpagemtime) {
next unless $oldpagemtime{$page};
my $line="mtime=$oldpagemtime{$page} ".
@@ -639,9 +657,11 @@ sub saveindex () { #{{{
if (exists $depends{$page}) {
$line.=" depends=".encode_entities($depends{$page}, " \t\n");
}
- print OUT $line."\n";
+ print OUT $line."\n" || error("failed writing to $newfile: $!", $cleanup);
}
- close OUT;
+ close OUT || error("failed saving to $newfile: $!", $cleanup);
+ rename($newfile, "$config{wikistatedir}/index") ||
+ error("failed renaming $newfile to $config{wikistatedir}/index", $cleanup);
} #}}}
sub template_file ($) { #{{{
diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm
index 6c489df8d..973053427 100644
--- a/IkiWiki/CGI.pm
+++ b/IkiWiki/CGI.pm
@@ -252,12 +252,15 @@ sub cgi_prefs ($$) { #{{{
elsif ($form->submitted eq 'Save Preferences' && $form->validate) {
foreach my $field (qw(email subscriptions)) {
if (defined $form->field($field) && length $form->field($field)) {
- userinfo_set($user_name, $field, $form->field($field)) || error("failed to set $field");
+ userinfo_set($user_name, $field, $form->field($field)) ||
+ error("failed to set $field");
}
}
if (is_admin($user_name)) {
set_banned_users(grep { ! is_admin($_) }
- split(' ', $form->field("banned_users")));
+ split(' ',
+ $form->field("banned_users"))) ||
+ error("failed saving changes");
}
$form->text(gettext("Preferences saved."));
}
@@ -487,7 +490,25 @@ sub cgi_editpage ($$) { #{{{
$content=~s/\r\n/\n/g;
$content=~s/\r/\n/g;
- writefile($file, $config{srcdir}, $content);
+
+ $config{cgi}=0; # avoid cgi error message
+ eval { writefile($file, $config{srcdir}, $content) };
+ $config{cgi}=1;
+ if ($@) {
+ $form->field(name => "rcsinfo", value => rcs_prepedit($file),
+ force => 1);
+ $form->tmpl_param("failed_save", 1);
+ $form->tmpl_param("error_message", $@);
+ $form->field("editcontent", value => $content, force => 1);
+ $form->field(name => "comments", value => $form->field('comments'), force => 1);
+ $form->field("do", "edit)");
+ $form->tmpl_param("page_select", 0);
+ $form->field(name => "page", type => 'hidden');
+ $form->field(name => "type", type => 'hidden');
+ $form->title(sprintf(gettext("editing %s"), $page));
+ print $form->render(submit => \@buttons);
+ return;
+ }
if ($config{rcs}) {
my $message="";
@@ -616,7 +637,7 @@ sub cgi (;$$) { #{{{
email => "",
password => "",
regdate => time,
- });
+ }) || error("failed adding user");
}
}
}
diff --git a/IkiWiki/Plugin/aggregate.pm b/IkiWiki/Plugin/aggregate.pm
index 7fceb0df3..a6f850236 100644
--- a/IkiWiki/Plugin/aggregate.pm
+++ b/IkiWiki/Plugin/aggregate.pm
@@ -153,8 +153,11 @@ sub loadstate () { #{{{
sub savestate () { #{{{
eval q{use HTML::Entities};
error($@) if $@;
- open (OUT, ">$config{wikistatedir}/aggregate" ||
- die "$config{wikistatedir}/aggregate: $!");
+ my $newfile="$config{wikistatedir}/aggregate.new";
+ # TODO: This cleanup function could use improvement. Any newly
+ # aggregated files are left behind unrecorded, and should be deleted.
+ my $cleanup = sub { unlink($newfile) };
+ open (OUT, ">$newfile") || error("open $newfile: $!", $cleanup);
foreach my $data (values %feeds, values %guids) {
if ($data->{remove}) {
if ($data->{name}) {
@@ -188,9 +191,11 @@ sub savestate () { #{{{
push @line, "$field=".$data->{$field};
}
}
- print OUT join(" ", @line)."\n";
+ print OUT join(" ", @line)."\n" || error("write $newfile: $!", $cleanup);
}
- close OUT;
+ close OUT || error("save $newfile: $!", $cleanup);
+ rename($newfile, "$config{wikistatedir}/aggregate") ||
+ error("rename $newfile: $!", $cleanup);
} #}}}
sub expire () { #{{{
diff --git a/IkiWiki/Plugin/passwordauth.pm b/IkiWiki/Plugin/passwordauth.pm
index 6d395324e..e0aa72a19 100644
--- a/IkiWiki/Plugin/passwordauth.pm
+++ b/IkiWiki/Plugin/passwordauth.pm
@@ -187,7 +187,8 @@ sub formbuilder (@) { #{{{
my $user_name=$form->field('name');
foreach my $field (qw(password)) {
if (defined $form->field($field) && length $form->field($field)) {
- IkiWiki::userinfo_set($user_name, $field, $form->field($field)) || error("failed to set $field");
+ IkiWiki::userinfo_set($user_name, $field, $form->field($field)) ||
+ error("failed to set $field");
}
}
}
diff --git a/IkiWiki/Plugin/search.pm b/IkiWiki/Plugin/search.pm
index 1b5c66716..d35c33e76 100644
--- a/IkiWiki/Plugin/search.pm
+++ b/IkiWiki/Plugin/search.pm
@@ -89,14 +89,20 @@ sub estcfg () { #{{{
my $estdir="$config{wikistatedir}/hyperestraier";
my $cgi=IkiWiki::basename($config{cgiurl});
$cgi=~s/\..*$//;
- open(TEMPLATE, ">:utf8", "$estdir/$cgi.tmpl") ||
- error("write $estdir/$cgi.tmpl: $!");
+
+ my $newfile="$estdir/$cgi.tmpl.new";
+ my $cleanup = sub { unlink($newfile) };
+ open(TEMPLATE, ">:utf8", $newfile) || error("open $newfile: $!", $cleanup);
print TEMPLATE IkiWiki::misctemplate("search",
"\n\n\n\n\n\n",
- baseurl => IkiWiki::dirname($config{cgiurl})."/");
- close TEMPLATE;
- open(TEMPLATE, ">$estdir/$cgi.conf") ||
- error("write $estdir/$cgi.conf: $!");
+ baseurl => IkiWiki::dirname($config{cgiurl})."/") ||
+ error("write $newfile: $!", $cleanup);
+ close TEMPLATE || error("save $newfile: $!", $cleanup);
+ rename($newfile, "$estdir/$cgi.tmpl") ||
+ error("rename $newfile: $!", $cleanup);
+
+ $newfile="$estdir/$cgi.conf";
+ open(TEMPLATE, ">$newfile") || error("open $newfile: $!", $cleanup);
my $template=template("estseek.conf");
eval q{use Cwd 'abs_path'};
$template->param(
@@ -105,13 +111,15 @@ sub estcfg () { #{{{
destdir => abs_path($config{destdir}),
url => $config{url},
);
- print TEMPLATE $template->output;
- close TEMPLATE;
+ print TEMPLATE $template->output || error("write $newfile: $!", $cleanup);
+ close TEMPLATE || error("save $newfile: $!", $cleanup);
+ rename($newfile, "$estdir/$cgi.conf") ||
+ error("rename $newfile: $!", $cleanup);
+
$cgi="$estdir/".IkiWiki::basename($config{cgiurl});
unlink($cgi);
my $estseek = defined $config{estseek} ? $config{estseek} : '/usr/lib/estraier/estseek.cgi';
- symlink($estseek, $cgi) ||
- error("symlink $estseek $cgi: $!");
+ symlink($estseek, $cgi) || error("symlink $estseek $cgi: $!");
} # }}}
sub estcmd ($;@) { #{{{
diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm
index d8bc5a9d9..cbba28251 100644
--- a/IkiWiki/Render.pm
+++ b/IkiWiki/Render.pm
@@ -198,22 +198,26 @@ sub render ($) { #{{{
my $srcfd=readfile($srcfile, 1, 1);
delete $depends{$file};
will_render($file, $file, 1);
- my $destfd=writefile($file, $config{destdir}, undef, 1, 1);
- my $blksize = 16384;
- my ($len, $buf, $written);
- while ($len = sysread $srcfd, $buf, $blksize) {
- if (! defined $len) {
- next if $! =~ /^Interrupted/;
- error("failed to read $srcfile: $!");
- }
- my $offset = 0;
- while ($len) {
- defined($written = syswrite OUT, $buf, $len, $offset)
- or error("failed to write $file: $!");
- $len -= $written;
- $offset += $written;
+ writefile($file, $config{destdir}, undef, 1, sub {
+ my $destfd=shift;
+ my $cleanup=shift;
+
+ my $blksize = 16384;
+ my ($len, $buf, $written);
+ while ($len = sysread $srcfd, $buf, $blksize) {
+ if (! defined $len) {
+ next if $! =~ /^Interrupted/;
+ error("failed to read $srcfile: $!", $cleanup);
+ }
+ my $offset = 0;
+ while ($len) {
+ defined($written = syswrite $destfd, $buf, $len, $offset)
+ or error("failed to write $file: $!", $cleanup);
+ $len -= $written;
+ $offset += $written;
+ }
}
- }
+ });
$oldpagemtime{$file}=time;
}
} #}}}
diff --git a/IkiWiki/UserInfo.pm b/IkiWiki/UserInfo.pm
index 115a263ce..02c27991c 100644
--- a/IkiWiki/UserInfo.pm
+++ b/IkiWiki/UserInfo.pm
@@ -15,12 +15,19 @@ sub userinfo_retrieve () { #{{{
sub userinfo_store ($) { #{{{
my $userinfo=shift;
+ my $newfile="$config{wikistatedir}/userdb.new";
my $oldmask=umask(077);
- my $ret=Storable::lock_store($userinfo, "$config{wikistatedir}/userdb");
+ my $ret=Storable::lock_store($userinfo, $newfile);
umask($oldmask);
+ if (defined $ret && $ret) {
+ if (! rename($newfile, "$config{wikistatedir}/userdb")) {
+ unlink($newfile);
+ $ret=undef;
+ }
+ }
return $ret;
} #}}}
-
+
sub userinfo_get ($$) { #{{{
my $user=shift;
my $field=shift;
diff --git a/debian/changelog b/debian/changelog
index f4e4e2437..aaffd76ac 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -16,8 +16,14 @@ ikiwiki (1.43) UNRELEASED; urgency=low
* Fix smiley plugin to support smileys at the very beginning or end of
the content.
* Allow multiple tag settings to appear in a single page.
-
- -- Joey Hess Tue, 13 Feb 2007 22:40:56 -0500
+ * Many changes to make ikiwiki very resistant to write failures
+ including out of disk space situations. ikiwiki should never leave
+ truncated files, and if the error occurs during a web-based file edit,
+ the user will be given an opportunity to retry.
+ Inspired by the many ways Moin Moin destroys itself when out of disk. :-)
+ * Fix syslogging of errors.
+
+ -- Joey Hess Wed, 14 Feb 2007 19:22:24 -0500
ikiwiki (1.42) unstable; urgency=low
diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn
index 8630b56ff..c10d73cf9 100644
--- a/doc/plugins/write.mdwn
+++ b/doc/plugins/write.mdwn
@@ -287,9 +287,11 @@ the id can be controled by the user.
Logs a debugging message. These are supressed unless verbose mode is turned
on.
-#### `error($)`
+#### `error($;$)`
-Aborts with an error message.
+Aborts with an error message. If the second parameter is passed, it is a
+function that is called after the error message is printed, to do any final
+cleanup.
Note that while any plugin can use this for a fatal error, plugins should
try to avoid dying on bad input, as that will halt the entire wiki build
@@ -359,14 +361,20 @@ in binary mode.
A failure to read the file will result in it dying with an error.
-#### `writefile($$$;$)`
+#### `writefile($$$;$$)`
Given a filename, a directory to put it in, and the file's content,
writes a file.
-The optional second parameter, if set to a true value, makes the file be
+The optional fourth parameter, if set to a true value, makes the file be
written in binary mode.
+The optional fifth parameter can be used to pass a function reference that
+will be called to handle writing to the file. The function will be called
+and passed a file descriptor it should write to, and an error recovery
+function it should call if the writing fails. (You will not normally need to
+use this interface.)
+
A failure to write the file will result in it dying with an error.
If the destination directory doesn't exist, it will first be created.
diff --git a/po/bg.po b/po/bg.po
index 1d0d4e396..6a560fbcd 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ikiwiki-bg\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-02-11 22:01-0500\n"
+"POT-Creation-Date: 2007-02-14 20:42-0500\n"
"PO-Revision-Date: 2007-01-12 01:19+0200\n"
"Last-Translator: Damyan Ivanov \n"
"Language-Team: Bulgarian \n"
@@ -20,37 +20,37 @@ msgstr ""
msgid "You need to log in first."
msgstr "ÐÑÑво ÑÑÑбва да влезеÑе."
-#: ../IkiWiki/CGI.pm:262
+#: ../IkiWiki/CGI.pm:265
msgid "Preferences saved."
msgstr "ÐÑедпоÑиÑаниÑÑа Ñа запазени."
-#: ../IkiWiki/CGI.pm:327
+#: ../IkiWiki/CGI.pm:330
#, perl-format
msgid "%s is not an editable page"
msgstr ""
-#: ../IkiWiki/CGI.pm:415 ../IkiWiki/Plugin/brokenlinks.pm:24
+#: ../IkiWiki/CGI.pm:418 ../IkiWiki/Plugin/brokenlinks.pm:24
#: ../IkiWiki/Plugin/inline.pm:164 ../IkiWiki/Plugin/opendiscussion.pm:17
#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:97
#: ../IkiWiki/Render.pm:165
msgid "discussion"
msgstr "диÑкÑÑиÑ"
-#: ../IkiWiki/CGI.pm:460
+#: ../IkiWiki/CGI.pm:463
#, perl-format
msgid "creating %s"
msgstr "ÑÑздаване на %s"
-#: ../IkiWiki/CGI.pm:477 ../IkiWiki/CGI.pm:520
+#: ../IkiWiki/CGI.pm:480 ../IkiWiki/CGI.pm:506 ../IkiWiki/CGI.pm:539
#, perl-format
msgid "editing %s"
msgstr "пÑомÑна на %s"
-#: ../IkiWiki/CGI.pm:628
+#: ../IkiWiki/CGI.pm:647
msgid "You are banned."
msgstr "ÐоÑÑÑпÑÑ Ð²Ð¸ е забÑанен."
-#: ../IkiWiki/CGI.pm:660
+#: ../IkiWiki/CGI.pm:679
msgid "login failed, perhaps you need to turn on cookies?"
msgstr ""
@@ -71,36 +71,36 @@ msgstr "ÑÑобÑениÑ"
msgid "new"
msgstr "ново"
-#: ../IkiWiki/Plugin/aggregate.pm:206
+#: ../IkiWiki/Plugin/aggregate.pm:211
#, perl-format
msgid "expiring %s (%s days old)"
msgstr "пÑемаÑ
ване на â%sâ (на %s дни)"
-#: ../IkiWiki/Plugin/aggregate.pm:213
+#: ../IkiWiki/Plugin/aggregate.pm:218
#, perl-format
msgid "expiring %s"
msgstr "пÑемаÑ
ване на â%sâ"
-#: ../IkiWiki/Plugin/aggregate.pm:236
+#: ../IkiWiki/Plugin/aggregate.pm:241
#, perl-format
msgid "checking feed %s ..."
msgstr "пÑовеÑка на изÑоÑника â%sâ"
-#: ../IkiWiki/Plugin/aggregate.pm:241
+#: ../IkiWiki/Plugin/aggregate.pm:246
#, perl-format
msgid "could not find feed at %s"
msgstr "не е намеÑен изÑоÑник на адÑÐµÑ â%sâ"
-#: ../IkiWiki/Plugin/aggregate.pm:250
+#: ../IkiWiki/Plugin/aggregate.pm:255
msgid "feed crashed XML::Feed!"
msgstr "данниÑе Ð¾Ñ Ð¸Ð·ÑоÑника пÑедизвикаÑ
а гÑеÑка в модÑла XML::Feed!"
-#: ../IkiWiki/Plugin/aggregate.pm:273
+#: ../IkiWiki/Plugin/aggregate.pm:278
#, perl-format
msgid "processed ok at %s"
msgstr "е обÑабоÑен ноÑмално Ð¾Ñ %s"
-#: ../IkiWiki/Plugin/aggregate.pm:328
+#: ../IkiWiki/Plugin/aggregate.pm:333
#, perl-format
msgid "creating new page %s"
msgstr "ÑÑздаване на нова ÑÑÑаниÑa â%sâ"
@@ -263,47 +263,47 @@ msgstr ""
"ÐÑоменливаÑа Ð¾Ñ Ð¾Ð±ÐºÑÑжениеÑо âREVâ не е Ñказана. ÐÑогÑамаÑа не Ñе изпÑлнÑва "
"каÑо âsvn post-commit hookâ. ÐÑма да бÑÐ´Ð°Ñ ÑазпÑаÑени извеÑÑÑваниÑ"
-#: ../IkiWiki/Render.pm:247 ../IkiWiki/Render.pm:267
+#: ../IkiWiki/Render.pm:251 ../IkiWiki/Render.pm:271
#, perl-format
msgid "skipping bad filename %s"
msgstr "пÑопÑÑкане на невалидноÑо име на Ñайл â%sâ"
-#: ../IkiWiki/Render.pm:307
+#: ../IkiWiki/Render.pm:311
#, perl-format
msgid "removing old page %s"
msgstr "пÑемаÑ
ване на ÑÑаÑаÑа ÑÑÑаниÑа â%sâ"
-#: ../IkiWiki/Render.pm:326
+#: ../IkiWiki/Render.pm:330
#, perl-format
msgid "scanning %s"
msgstr "ÑканиÑане на â%sâ"
-#: ../IkiWiki/Render.pm:335
+#: ../IkiWiki/Render.pm:339
#, perl-format
msgid "rendering %s"
msgstr "обновÑване на ÑÑÑаниÑаÑа â%sâ"
-#: ../IkiWiki/Render.pm:347
+#: ../IkiWiki/Render.pm:351
#, perl-format
msgid "rendering %s, which links to %s"
msgstr "обновÑване на ÑÑÑаниÑаÑа â%sâ, ÑÑдÑÑжаÑа пÑепÑаÑки кÑм â%sâ"
-#: ../IkiWiki/Render.pm:364
+#: ../IkiWiki/Render.pm:368
#, perl-format
msgid "rendering %s, which depends on %s"
msgstr "обновÑване на ÑÑÑаниÑаÑа â%sâ, завиÑеÑа Ð¾Ñ â%sâ"
-#: ../IkiWiki/Render.pm:402
+#: ../IkiWiki/Render.pm:406
#, perl-format
msgid "rendering %s, to update its backlinks"
msgstr "обновÑване на â%sâ и оÑÑвÑеменÑване на обÑаÑниÑе вÑÑзки"
-#: ../IkiWiki/Render.pm:414
+#: ../IkiWiki/Render.pm:418
#, perl-format
msgid "removing %s, no longer rendered by %s"
msgstr "пÑемаÑ
ване на â%sâ понеже не Ñе генеÑиÑа Ð¾Ñ â%sâ"
-#: ../IkiWiki/Render.pm:440
+#: ../IkiWiki/Render.pm:444
#, perl-format
msgid "ikiwiki: cannot render %s"
msgstr "ikiwiki: неÑÑпеÑ
пÑи обновÑване на ÑÑÑаниÑаÑа â%sâ"
@@ -335,7 +335,7 @@ msgstr "гоÑово"
#. translators: A list of one or more pages that were changed,
#. translators: And the name of the user making the change.
#. translators: This is used as the subject of a commit email.
-#: ../IkiWiki/UserInfo.pm:139
+#: ../IkiWiki/UserInfo.pm:146
#, perl-format
msgid "update of %s's %s by %s"
msgstr "обновÑване на ÑÑÑаниÑиÑе Ð¾Ñ Ñики â%sâ: %s Ð¾Ñ Ð¿Ð¾ÑÑебиÑел â%sâ"
@@ -376,13 +376,13 @@ msgstr "ÑÑпеÑно генеÑиÑане на %s"
msgid "usage: ikiwiki [options] source dest"
msgstr "ÑоÑмаÑ: ikiwiki [опÑии] изÑоÑник меÑÑоназнаÑение"
-#: ../IkiWiki.pm:103
+#: ../IkiWiki.pm:104
msgid "Must specify url to wiki with --url when using --cgi"
msgstr ""
"ÐÑи използване на паÑемеÑÑÑа â--cgiâ е необÑ
одимо да Ñе Ñкаже и "
"меÑÑоположениеÑо на ÑикиÑо ÑÑез паÑамеÑÑÑа â--urlâ"
-#: ../IkiWiki.pm:148 ../IkiWiki.pm:149
+#: ../IkiWiki.pm:151 ../IkiWiki.pm:152
msgid "Error"
msgstr "ÐÑеÑка"
@@ -390,7 +390,7 @@ msgstr "ÐÑеÑка"
#. translators: preprocessor directive name,
#. translators: the second a page name, the
#. translators: third a number.
-#: ../IkiWiki.pm:532
+#: ../IkiWiki.pm:549
#, perl-format
msgid "%s preprocessing loop detected on %s at depth %i"
msgstr "оÑкÑиÑа е ÑиклиÑна завидимоÑÑ Ð¿Ñи %s на â%sâ на дÑлбоÑина %i"
diff --git a/po/cs.po b/po/cs.po
index 433f4a5ea..1f6e6bcfc 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ikiwiki\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-02-11 22:01-0500\n"
+"POT-Creation-Date: 2007-02-14 20:42-0500\n"
"PO-Revision-Date: 2007-01-07 11:59+0100\n"
"Last-Translator: Miroslav Kure \n"
"Language-Team: Czech \n"
@@ -19,37 +19,37 @@ msgstr ""
msgid "You need to log in first."
msgstr "Nejprve se musÃte pÅihlásit."
-#: ../IkiWiki/CGI.pm:262
+#: ../IkiWiki/CGI.pm:265
msgid "Preferences saved."
msgstr "Nastavenà uloženo."
-#: ../IkiWiki/CGI.pm:327
+#: ../IkiWiki/CGI.pm:330
#, perl-format
msgid "%s is not an editable page"
msgstr ""
-#: ../IkiWiki/CGI.pm:415 ../IkiWiki/Plugin/brokenlinks.pm:24
+#: ../IkiWiki/CGI.pm:418 ../IkiWiki/Plugin/brokenlinks.pm:24
#: ../IkiWiki/Plugin/inline.pm:164 ../IkiWiki/Plugin/opendiscussion.pm:17
#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:97
#: ../IkiWiki/Render.pm:165
msgid "discussion"
msgstr "diskuse"
-#: ../IkiWiki/CGI.pm:460
+#: ../IkiWiki/CGI.pm:463
#, perl-format
msgid "creating %s"
msgstr "vytváÅÃm %s"
-#: ../IkiWiki/CGI.pm:477 ../IkiWiki/CGI.pm:520
+#: ../IkiWiki/CGI.pm:480 ../IkiWiki/CGI.pm:506 ../IkiWiki/CGI.pm:539
#, perl-format
msgid "editing %s"
msgstr "upravuji %s"
-#: ../IkiWiki/CGI.pm:628
+#: ../IkiWiki/CGI.pm:647
msgid "You are banned."
msgstr "Jste vyhoÅ¡tÄni."
-#: ../IkiWiki/CGI.pm:660
+#: ../IkiWiki/CGI.pm:679
msgid "login failed, perhaps you need to turn on cookies?"
msgstr ""
@@ -70,36 +70,36 @@ msgstr "pÅÃspÄvky"
msgid "new"
msgstr "nový"
-#: ../IkiWiki/Plugin/aggregate.pm:206
+#: ../IkiWiki/Plugin/aggregate.pm:211
#, perl-format
msgid "expiring %s (%s days old)"
msgstr "expiruji %s (stará %s dnů)"
-#: ../IkiWiki/Plugin/aggregate.pm:213
+#: ../IkiWiki/Plugin/aggregate.pm:218
#, perl-format
msgid "expiring %s"
msgstr "expiruji %s"
-#: ../IkiWiki/Plugin/aggregate.pm:236
+#: ../IkiWiki/Plugin/aggregate.pm:241
#, perl-format
msgid "checking feed %s ..."
msgstr "kontroluji zdroj %s ..."
-#: ../IkiWiki/Plugin/aggregate.pm:241
+#: ../IkiWiki/Plugin/aggregate.pm:246
#, perl-format
msgid "could not find feed at %s"
msgstr "nemohu najÃt zdroj na %s"
-#: ../IkiWiki/Plugin/aggregate.pm:250
+#: ../IkiWiki/Plugin/aggregate.pm:255
msgid "feed crashed XML::Feed!"
msgstr "zdroj shodil XML::Feed!"
-#: ../IkiWiki/Plugin/aggregate.pm:273
+#: ../IkiWiki/Plugin/aggregate.pm:278
#, perl-format
msgid "processed ok at %s"
msgstr "zpracováno ok %s"
-#: ../IkiWiki/Plugin/aggregate.pm:328
+#: ../IkiWiki/Plugin/aggregate.pm:333
#, perl-format
msgid "creating new page %s"
msgstr "vytváÅÃm novou stránku %s"
@@ -257,47 +257,47 @@ msgid ""
msgstr ""
"REV nenà nastavena, nenà spuÅ¡tÄna ze svn post-commit, nemohu zaslat oznámenÃ"
-#: ../IkiWiki/Render.pm:247 ../IkiWiki/Render.pm:267
+#: ../IkiWiki/Render.pm:251 ../IkiWiki/Render.pm:271
#, perl-format
msgid "skipping bad filename %s"
msgstr "pÅeskakuji chybné jméno souboru %s"
-#: ../IkiWiki/Render.pm:307
+#: ../IkiWiki/Render.pm:311
#, perl-format
msgid "removing old page %s"
msgstr "odstraÅuji starou stránku %s"
-#: ../IkiWiki/Render.pm:326
+#: ../IkiWiki/Render.pm:330
#, perl-format
msgid "scanning %s"
msgstr "prohledávám %s"
-#: ../IkiWiki/Render.pm:335
+#: ../IkiWiki/Render.pm:339
#, perl-format
msgid "rendering %s"
msgstr "zpracovávám %s"
-#: ../IkiWiki/Render.pm:347
+#: ../IkiWiki/Render.pm:351
#, perl-format
msgid "rendering %s, which links to %s"
msgstr "zpracovávám %s, která odkazuje na %s"
-#: ../IkiWiki/Render.pm:364
+#: ../IkiWiki/Render.pm:368
#, perl-format
msgid "rendering %s, which depends on %s"
msgstr "zpracovávám %s, která závisà na %s"
-#: ../IkiWiki/Render.pm:402
+#: ../IkiWiki/Render.pm:406
#, perl-format
msgid "rendering %s, to update its backlinks"
msgstr "zpracovávám %s, aby se aktualizovaly zpÄtné odkazy"
-#: ../IkiWiki/Render.pm:414
+#: ../IkiWiki/Render.pm:418
#, perl-format
msgid "removing %s, no longer rendered by %s"
msgstr "odstraÅuji %s, již nenà zpracovávána %s"
-#: ../IkiWiki/Render.pm:440
+#: ../IkiWiki/Render.pm:444
#, perl-format
msgid "ikiwiki: cannot render %s"
msgstr "ikiwiki: nelze zpracovat %s"
@@ -329,7 +329,7 @@ msgstr "hotovo"
#. translators: A list of one or more pages that were changed,
#. translators: And the name of the user making the change.
#. translators: This is used as the subject of a commit email.
-#: ../IkiWiki/UserInfo.pm:139
+#: ../IkiWiki/UserInfo.pm:146
#, perl-format
msgid "update of %s's %s by %s"
msgstr "aktualizace %s (%s) uživatelem %s"
@@ -370,11 +370,11 @@ msgstr "%s byl úspÄÅ¡nÄ vytvoÅen"
msgid "usage: ikiwiki [options] source dest"
msgstr "použitÃ: ikiwiki [volby] zdroj cÃl"
-#: ../IkiWiki.pm:103
+#: ../IkiWiki.pm:104
msgid "Must specify url to wiki with --url when using --cgi"
msgstr "PÅi použità --cgi musÃte pomocà --url zadat url k wiki"
-#: ../IkiWiki.pm:148 ../IkiWiki.pm:149
+#: ../IkiWiki.pm:151 ../IkiWiki.pm:152
msgid "Error"
msgstr "Chyba"
@@ -382,7 +382,7 @@ msgstr "Chyba"
#. translators: preprocessor directive name,
#. translators: the second a page name, the
#. translators: third a number.
-#: ../IkiWiki.pm:532
+#: ../IkiWiki.pm:549
#, perl-format
msgid "%s preprocessing loop detected on %s at depth %i"
msgstr "Byla rozpoznána smyÄka direktivy %s na %s v hloubce %i"
diff --git a/po/es.po b/po/es.po
index b39851725..ea58fbe82 100644
--- a/po/es.po
+++ b/po/es.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: es\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-02-13 18:43-0500\n"
+"POT-Creation-Date: 2007-02-14 20:42-0500\n"
"PO-Revision-Date: 2007-02-12 10:31+0100\n"
"Last-Translator: VÃctor Moral \n"
"Language-Team: spanish \n"
@@ -20,37 +20,37 @@ msgstr ""
msgid "You need to log in first."
msgstr "Antes es necesario identificarse."
-#: ../IkiWiki/CGI.pm:262
+#: ../IkiWiki/CGI.pm:265
msgid "Preferences saved."
msgstr "Las preferencias se han guardado."
-#: ../IkiWiki/CGI.pm:327
+#: ../IkiWiki/CGI.pm:330
#, perl-format
msgid "%s is not an editable page"
msgstr "la página %s no es modificable"
-#: ../IkiWiki/CGI.pm:415 ../IkiWiki/Plugin/brokenlinks.pm:24
+#: ../IkiWiki/CGI.pm:418 ../IkiWiki/Plugin/brokenlinks.pm:24
#: ../IkiWiki/Plugin/inline.pm:164 ../IkiWiki/Plugin/opendiscussion.pm:17
#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:97
#: ../IkiWiki/Render.pm:165
msgid "discussion"
msgstr "comentarios"
-#: ../IkiWiki/CGI.pm:460
+#: ../IkiWiki/CGI.pm:463
#, perl-format
msgid "creating %s"
msgstr "creando página %s"
-#: ../IkiWiki/CGI.pm:477 ../IkiWiki/CGI.pm:520
+#: ../IkiWiki/CGI.pm:480 ../IkiWiki/CGI.pm:506 ../IkiWiki/CGI.pm:539
#, perl-format
msgid "editing %s"
msgstr "modificando página %s"
-#: ../IkiWiki/CGI.pm:628
+#: ../IkiWiki/CGI.pm:647
msgid "You are banned."
msgstr "Ha sido expulsado."
-#: ../IkiWiki/CGI.pm:660
+#: ../IkiWiki/CGI.pm:679
msgid "login failed, perhaps you need to turn on cookies?"
msgstr ""
"registro fallido, ¿ tal vez es necesario activar las cookies en el "
@@ -73,36 +73,36 @@ msgstr "entradas"
msgid "new"
msgstr "nuevo"
-#: ../IkiWiki/Plugin/aggregate.pm:206
+#: ../IkiWiki/Plugin/aggregate.pm:211
#, perl-format
msgid "expiring %s (%s days old)"
msgstr "%s caducada (%s dÃas de antigüedad)"
-#: ../IkiWiki/Plugin/aggregate.pm:213
+#: ../IkiWiki/Plugin/aggregate.pm:218
#, perl-format
msgid "expiring %s"
msgstr "%s caducada"
-#: ../IkiWiki/Plugin/aggregate.pm:236
+#: ../IkiWiki/Plugin/aggregate.pm:241
#, perl-format
msgid "checking feed %s ..."
msgstr "comprobando entrada %s ..."
-#: ../IkiWiki/Plugin/aggregate.pm:241
+#: ../IkiWiki/Plugin/aggregate.pm:246
#, perl-format
msgid "could not find feed at %s"
msgstr "no puedo encontrar la entrada en %s"
-#: ../IkiWiki/Plugin/aggregate.pm:250
+#: ../IkiWiki/Plugin/aggregate.pm:255
msgid "feed crashed XML::Feed!"
msgstr "¡ la entrada ha provocado un error fatal en XML::Feed!"
-#: ../IkiWiki/Plugin/aggregate.pm:273
+#: ../IkiWiki/Plugin/aggregate.pm:278
#, perl-format
msgid "processed ok at %s"
msgstr "proceso completado con éxito a %s"
-#: ../IkiWiki/Plugin/aggregate.pm:328
+#: ../IkiWiki/Plugin/aggregate.pm:333
#, perl-format
msgid "creating new page %s"
msgstr "creando nueva página %s"
@@ -265,49 +265,49 @@ msgstr ""
"La variable de entorno REV no está definida, por lo que no puede funcionar "
"svn post-commit; no puedo enviar notificación alguna."
-#: ../IkiWiki/Render.pm:247 ../IkiWiki/Render.pm:267
+#: ../IkiWiki/Render.pm:251 ../IkiWiki/Render.pm:271
#, perl-format
msgid "skipping bad filename %s"
msgstr "ignorando el archivo %s porque su no nombre no es correcto"
-#: ../IkiWiki/Render.pm:307
+#: ../IkiWiki/Render.pm:311
#, perl-format
msgid "removing old page %s"
msgstr "eliminando la antigua página %s"
-#: ../IkiWiki/Render.pm:326
+#: ../IkiWiki/Render.pm:330
#, perl-format
msgid "scanning %s"
msgstr "explorando %s"
-#: ../IkiWiki/Render.pm:335
+#: ../IkiWiki/Render.pm:339
#, perl-format
msgid "rendering %s"
msgstr "convirtiendo %s"
-#: ../IkiWiki/Render.pm:347
+#: ../IkiWiki/Render.pm:351
#, perl-format
msgid "rendering %s, which links to %s"
msgstr "convirtiendo la página %s, la cual referencia a %s"
-#: ../IkiWiki/Render.pm:364
+#: ../IkiWiki/Render.pm:368
#, perl-format
msgid "rendering %s, which depends on %s"
msgstr "convirtiendo la página %s, la cual depende de %s"
-#: ../IkiWiki/Render.pm:402
+#: ../IkiWiki/Render.pm:406
#, perl-format
msgid "rendering %s, to update its backlinks"
msgstr ""
"convirtiendo la página %s para actualizar la lista de páginas que hacen "
"referencia a ella."
-#: ../IkiWiki/Render.pm:414
+#: ../IkiWiki/Render.pm:418
#, perl-format
msgid "removing %s, no longer rendered by %s"
msgstr "eliminando la página %s puesto que ya no se deriva de %s"
-#: ../IkiWiki/Render.pm:440
+#: ../IkiWiki/Render.pm:444
#, perl-format
msgid "ikiwiki: cannot render %s"
msgstr "ikwiki: no puedo convertir la página %s"
@@ -339,7 +339,7 @@ msgstr "completado"
#. translators: A list of one or more pages that were changed,
#. translators: And the name of the user making the change.
#. translators: This is used as the subject of a commit email.
-#: ../IkiWiki/UserInfo.pm:139
+#: ../IkiWiki/UserInfo.pm:146
#, perl-format
msgid "update of %s's %s by %s"
msgstr "actualizado el wiki %s y la página %s por el usuario %s"
@@ -381,13 +381,13 @@ msgstr "creado con éxito el programa envoltorio %s"
msgid "usage: ikiwiki [options] source dest"
msgstr "uso: ikiwiki [opciones] origen destino"
-#: ../IkiWiki.pm:103
+#: ../IkiWiki.pm:104
msgid "Must specify url to wiki with --url when using --cgi"
msgstr ""
"Es obligatorio especificar un url al wiki con el parámetro --url si se "
"utiliza el parámetro --cgi"
-#: ../IkiWiki.pm:148 ../IkiWiki.pm:149
+#: ../IkiWiki.pm:151 ../IkiWiki.pm:152
msgid "Error"
msgstr "Error"
@@ -395,7 +395,7 @@ msgstr "Error"
#. translators: preprocessor directive name,
#. translators: the second a page name, the
#. translators: third a number.
-#: ../IkiWiki.pm:532
+#: ../IkiWiki.pm:549
#, perl-format
msgid "%s preprocessing loop detected on %s at depth %i"
msgstr ""
diff --git a/po/fr.po b/po/fr.po
index 7a4ce1db2..d8074ee4d 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ikiwiki\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-02-11 22:01-0500\n"
+"POT-Creation-Date: 2007-02-14 20:42-0500\n"
"PO-Revision-Date: 2007-01-22 22:12+0100\n"
"Last-Translator: Jean-Luc Coulon (f5ibh) \n"
"Language-Team: French \n"
@@ -21,37 +21,37 @@ msgstr ""
msgid "You need to log in first."
msgstr "Vous devez d'abord vous identifier."
-#: ../IkiWiki/CGI.pm:262
+#: ../IkiWiki/CGI.pm:265
msgid "Preferences saved."
msgstr "Les préférences ont été enregistrées."
-#: ../IkiWiki/CGI.pm:327
+#: ../IkiWiki/CGI.pm:330
#, perl-format
msgid "%s is not an editable page"
msgstr ""
-#: ../IkiWiki/CGI.pm:415 ../IkiWiki/Plugin/brokenlinks.pm:24
+#: ../IkiWiki/CGI.pm:418 ../IkiWiki/Plugin/brokenlinks.pm:24
#: ../IkiWiki/Plugin/inline.pm:164 ../IkiWiki/Plugin/opendiscussion.pm:17
#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:97
#: ../IkiWiki/Render.pm:165
msgid "discussion"
msgstr "Discussion"
-#: ../IkiWiki/CGI.pm:460
+#: ../IkiWiki/CGI.pm:463
#, perl-format
msgid "creating %s"
msgstr "Création de %s"
-#: ../IkiWiki/CGI.pm:477 ../IkiWiki/CGI.pm:520
+#: ../IkiWiki/CGI.pm:480 ../IkiWiki/CGI.pm:506 ../IkiWiki/CGI.pm:539
#, perl-format
msgid "editing %s"
msgstr "Ãdition de %s"
-#: ../IkiWiki/CGI.pm:628
+#: ../IkiWiki/CGI.pm:647
msgid "You are banned."
msgstr "Vous avez été banni."
-#: ../IkiWiki/CGI.pm:660
+#: ../IkiWiki/CGI.pm:679
msgid "login failed, perhaps you need to turn on cookies?"
msgstr ""
"Ãchec de l'identification, vous devriez peut-être autoriser les cookies."
@@ -73,36 +73,36 @@ msgstr "Messages"
msgid "new"
msgstr "Nouveau"
-#: ../IkiWiki/Plugin/aggregate.pm:206
+#: ../IkiWiki/Plugin/aggregate.pm:211
#, perl-format
msgid "expiring %s (%s days old)"
msgstr "Fin de validité de %s (date de %s jours)"
-#: ../IkiWiki/Plugin/aggregate.pm:213
+#: ../IkiWiki/Plugin/aggregate.pm:218
#, perl-format
msgid "expiring %s"
msgstr "Fin de validité de %s"
-#: ../IkiWiki/Plugin/aggregate.pm:236
+#: ../IkiWiki/Plugin/aggregate.pm:241
#, perl-format
msgid "checking feed %s ..."
msgstr "Vérification du flux %s..."
-#: ../IkiWiki/Plugin/aggregate.pm:241
+#: ../IkiWiki/Plugin/aggregate.pm:246
#, perl-format
msgid "could not find feed at %s"
msgstr "Impossible de trouver de flux à %s"
-#: ../IkiWiki/Plugin/aggregate.pm:250
+#: ../IkiWiki/Plugin/aggregate.pm:255
msgid "feed crashed XML::Feed!"
msgstr "Plantage du flux XML::Feed !"
-#: ../IkiWiki/Plugin/aggregate.pm:273
+#: ../IkiWiki/Plugin/aggregate.pm:278
#, perl-format
msgid "processed ok at %s"
msgstr "A été correctement traité à %s"
-#: ../IkiWiki/Plugin/aggregate.pm:328
+#: ../IkiWiki/Plugin/aggregate.pm:333
#, perl-format
msgid "creating new page %s"
msgstr "Création de la nouvelle page %s"
@@ -265,47 +265,47 @@ msgstr ""
"après un commit sur le svn (« hook post-commit »), impossible d'envoyer des "
"notifications"
-#: ../IkiWiki/Render.pm:247 ../IkiWiki/Render.pm:267
+#: ../IkiWiki/Render.pm:251 ../IkiWiki/Render.pm:271
#, perl-format
msgid "skipping bad filename %s"
msgstr "Saut du nom de fichier incorrect %s"
-#: ../IkiWiki/Render.pm:307
+#: ../IkiWiki/Render.pm:311
#, perl-format
msgid "removing old page %s"
msgstr "Suppression de l'ancienne page %s"
-#: ../IkiWiki/Render.pm:326
+#: ../IkiWiki/Render.pm:330
#, perl-format
msgid "scanning %s"
msgstr "Parcours de %s"
-#: ../IkiWiki/Render.pm:335
+#: ../IkiWiki/Render.pm:339
#, perl-format
msgid "rendering %s"
msgstr "Rendu de %s"
-#: ../IkiWiki/Render.pm:347
+#: ../IkiWiki/Render.pm:351
#, perl-format
msgid "rendering %s, which links to %s"
msgstr "Rendu de %s, qui est lié à %s"
-#: ../IkiWiki/Render.pm:364
+#: ../IkiWiki/Render.pm:368
#, perl-format
msgid "rendering %s, which depends on %s"
msgstr "Rendu de %s, qui dépend de %s"
-#: ../IkiWiki/Render.pm:402
+#: ../IkiWiki/Render.pm:406
#, perl-format
msgid "rendering %s, to update its backlinks"
msgstr "Rendu de %s, afin de mettre à jour ses rétroliens"
-#: ../IkiWiki/Render.pm:414
+#: ../IkiWiki/Render.pm:418
#, perl-format
msgid "removing %s, no longer rendered by %s"
msgstr "Suppression de %s, qui n'est plus rendu par %s"
-#: ../IkiWiki/Render.pm:440
+#: ../IkiWiki/Render.pm:444
#, perl-format
msgid "ikiwiki: cannot render %s"
msgstr "ikiwiki : impossible d'effectuer le rendu de %s"
@@ -337,7 +337,7 @@ msgstr "Terminé"
#. translators: A list of one or more pages that were changed,
#. translators: And the name of the user making the change.
#. translators: This is used as the subject of a commit email.
-#: ../IkiWiki/UserInfo.pm:139
+#: ../IkiWiki/UserInfo.pm:146
#, perl-format
msgid "update of %s's %s by %s"
msgstr "Wiki %s, les pages %s ont été mises à jour par %s"
@@ -379,13 +379,13 @@ msgstr "%s a été créé avec succès"
msgid "usage: ikiwiki [options] source dest"
msgstr "Syntaxe : ikiwiki [options] source destination"
-#: ../IkiWiki.pm:103
+#: ../IkiWiki.pm:104
msgid "Must specify url to wiki with --url when using --cgi"
msgstr ""
"Vous devez indiquer une url vers le wiki par --url lors de l'utilisation de "
"--cgi"
-#: ../IkiWiki.pm:148 ../IkiWiki.pm:149
+#: ../IkiWiki.pm:151 ../IkiWiki.pm:152
msgid "Error"
msgstr "Erreur"
@@ -393,7 +393,7 @@ msgstr "Erreur"
#. translators: preprocessor directive name,
#. translators: the second a page name, the
#. translators: third a number.
-#: ../IkiWiki.pm:532
+#: ../IkiWiki.pm:549
#, perl-format
msgid "%s preprocessing loop detected on %s at depth %i"
msgstr ""
diff --git a/po/gu.po b/po/gu.po
index 421810b49..05cd48ffe 100644
--- a/po/gu.po
+++ b/po/gu.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ikiwiki-gu\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-02-11 22:01-0500\n"
+"POT-Creation-Date: 2007-02-14 20:42-0500\n"
"PO-Revision-Date: 2007-01-11 16:05+0530\n"
"Last-Translator: Kartik Mistry \n"
"Language-Team: Gujarati \n"
@@ -19,37 +19,37 @@ msgstr ""
msgid "You need to log in first."
msgstr "તમારૠપà«àª°àª¥àª® લà«àª àªàª¨ થવà«àª પડશà«."
-#: ../IkiWiki/CGI.pm:262
+#: ../IkiWiki/CGI.pm:265
msgid "Preferences saved."
msgstr "પà«àª°àª¾àª¥àª®àª¿àªàª¤àª¾àª સàªàªà«àª°àª¹àª¾àª."
-#: ../IkiWiki/CGI.pm:327
+#: ../IkiWiki/CGI.pm:330
#, perl-format
msgid "%s is not an editable page"
msgstr ""
-#: ../IkiWiki/CGI.pm:415 ../IkiWiki/Plugin/brokenlinks.pm:24
+#: ../IkiWiki/CGI.pm:418 ../IkiWiki/Plugin/brokenlinks.pm:24
#: ../IkiWiki/Plugin/inline.pm:164 ../IkiWiki/Plugin/opendiscussion.pm:17
#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:97
#: ../IkiWiki/Render.pm:165
msgid "discussion"
msgstr "àªàª°à«àªàª¾"
-#: ../IkiWiki/CGI.pm:460
+#: ../IkiWiki/CGI.pm:463
#, perl-format
msgid "creating %s"
msgstr "%s બનાવૠàªà«"
-#: ../IkiWiki/CGI.pm:477 ../IkiWiki/CGI.pm:520
+#: ../IkiWiki/CGI.pm:480 ../IkiWiki/CGI.pm:506 ../IkiWiki/CGI.pm:539
#, perl-format
msgid "editing %s"
msgstr "%s સà«àª§àª¾àª°à« àªà«"
-#: ../IkiWiki/CGI.pm:628
+#: ../IkiWiki/CGI.pm:647
msgid "You are banned."
msgstr "તમારા પર પà«àª°àª¤àª¿àª¬àªàª§ àªà«."
-#: ../IkiWiki/CGI.pm:660
+#: ../IkiWiki/CGI.pm:679
msgid "login failed, perhaps you need to turn on cookies?"
msgstr ""
@@ -70,36 +70,36 @@ msgstr "પà«àª¸à«àª"
msgid "new"
msgstr "નવà«àª"
-#: ../IkiWiki/Plugin/aggregate.pm:206
+#: ../IkiWiki/Plugin/aggregate.pm:211
#, perl-format
msgid "expiring %s (%s days old)"
msgstr "àªà«àª¨à«àª àªàª°à« àªà« %s (%s દિવસૠàªà«àª¨à«àª)"
-#: ../IkiWiki/Plugin/aggregate.pm:213
+#: ../IkiWiki/Plugin/aggregate.pm:218
#, perl-format
msgid "expiring %s"
msgstr "àªà«àª¨à«àª àªàª°à« àªà« %s"
-#: ../IkiWiki/Plugin/aggregate.pm:236
+#: ../IkiWiki/Plugin/aggregate.pm:241
#, perl-format
msgid "checking feed %s ..."
msgstr "ફà«àª¡ %s àªàªàª¾àª¸à« àªà« ..."
-#: ../IkiWiki/Plugin/aggregate.pm:241
+#: ../IkiWiki/Plugin/aggregate.pm:246
#, perl-format
msgid "could not find feed at %s"
msgstr "%s પર ફà«àª¡ મળૠશàªà«àª¯à«àª નહà«"
-#: ../IkiWiki/Plugin/aggregate.pm:250
+#: ../IkiWiki/Plugin/aggregate.pm:255
msgid "feed crashed XML::Feed!"
msgstr "ફà«àª¡ àªàª¾àªàªà« પડà«àª¯à«àª XML::Feed!"
-#: ../IkiWiki/Plugin/aggregate.pm:273
+#: ../IkiWiki/Plugin/aggregate.pm:278
#, perl-format
msgid "processed ok at %s"
msgstr "àªàª¨àª¾ પર બરાબર àªà« %s"
-#: ../IkiWiki/Plugin/aggregate.pm:328
+#: ../IkiWiki/Plugin/aggregate.pm:333
#, perl-format
msgid "creating new page %s"
msgstr "નવà«àª પાનà«àª %s બનાવૠàªà«"
@@ -255,47 +255,47 @@ msgid ""
"notifications"
msgstr "REV àªà«àª વà«àª² નથà«, svn post-commit hook માàªàª¥à« àªàª¾àª²àª¤à«àª નથà«, નà«àªàª§ મà«àªàª²à« શàªàª¾àª¶à« નહà«"
-#: ../IkiWiki/Render.pm:247 ../IkiWiki/Render.pm:267
+#: ../IkiWiki/Render.pm:251 ../IkiWiki/Render.pm:271
#, perl-format
msgid "skipping bad filename %s"
msgstr "àªàª°àª¾àª¬ ફાàªàª² નામ àªà«àª¡à« દૠàªà« %s"
-#: ../IkiWiki/Render.pm:307
+#: ../IkiWiki/Render.pm:311
#, perl-format
msgid "removing old page %s"
msgstr "àªà«àª¨àª¾àª પાનાઠદà«àª° àªàª°à« àªà« %s"
-#: ../IkiWiki/Render.pm:326
+#: ../IkiWiki/Render.pm:330
#, perl-format
msgid "scanning %s"
msgstr "%s શà«àª§à« àªà«"
-#: ../IkiWiki/Render.pm:335
+#: ../IkiWiki/Render.pm:339
#, perl-format
msgid "rendering %s"
msgstr "રà«àª¨à«àª¡àª° àªàª°à« àªà« %s"
-#: ../IkiWiki/Render.pm:347
+#: ../IkiWiki/Render.pm:351
#, perl-format
msgid "rendering %s, which links to %s"
msgstr "રà«àª¨à«àª¡àª° àªàª°à« àªà« %s, àªà« %s સાથૠàªà«àª¡àª¾àª£ ધરાવૠàªà«"
-#: ../IkiWiki/Render.pm:364
+#: ../IkiWiki/Render.pm:368
#, perl-format
msgid "rendering %s, which depends on %s"
msgstr "રà«àª¨à«àª¡àª° àªàª°à« àªà« %s, àªà« %s પર àªàª§àª¾àª°àª¿àª¤ àªà«"
-#: ../IkiWiki/Render.pm:402
+#: ../IkiWiki/Render.pm:406
#, perl-format
msgid "rendering %s, to update its backlinks"
msgstr "રà«àª¨à«àª¡àª° àªàª°à« àªà« %s, તà«àª¨àª¾àª પાàªàª³àª¨àª¾àª àªà«àª¡àª¾àª£à« સà«àª§àª¾àª°àªµàª¾ માàªà«"
-#: ../IkiWiki/Render.pm:414
+#: ../IkiWiki/Render.pm:418
#, perl-format
msgid "removing %s, no longer rendered by %s"
msgstr "દà«àª° àªàª°à« àªà« %s, હવૠ%s વડૠરà«àª¨à«àª¡àª° àªàª°àª¾àª¤à«àª નથà«"
-#: ../IkiWiki/Render.pm:440
+#: ../IkiWiki/Render.pm:444
#, perl-format
msgid "ikiwiki: cannot render %s"
msgstr "ikiwiki: %s રà«àª¨à«àª¡àª° àªàª°à« શàªàª¾àª¤à«àª નથà«"
@@ -327,7 +327,7 @@ msgstr "સàªàªªà«àª°à«àª£"
#. translators: A list of one or more pages that were changed,
#. translators: And the name of the user making the change.
#. translators: This is used as the subject of a commit email.
-#: ../IkiWiki/UserInfo.pm:139
+#: ../IkiWiki/UserInfo.pm:146
#, perl-format
msgid "update of %s's %s by %s"
msgstr "%s નૠસà«àª§àª¾àª°à« %s નાઠ%s વડà«"
@@ -368,11 +368,11 @@ msgstr "સફળતાપà«àª°à«àªµàª પà«àª¦àª¾ àªàª°à«àª² àªà« %s"
msgid "usage: ikiwiki [options] source dest"
msgstr "àªàªªàª¯à«àª: ikiwiki [વિàªàª²à«àªªà«] source dest"
-#: ../IkiWiki.pm:103
+#: ../IkiWiki.pm:104
msgid "Must specify url to wiki with --url when using --cgi"
msgstr "àªà«àª¯àª¾àª°à« --cgi àªàªªàª¯à«àª àªàª°àª¤àª¾àª હà«àª¯ તà«àª¯àª¾àª°à« વà«àªà«àª¨à«àª યà«àªàª°àªàª² સà«àªªàª·à«àª àªàª°àªµà«àª ઠપડશà«"
-#: ../IkiWiki.pm:148 ../IkiWiki.pm:149
+#: ../IkiWiki.pm:151 ../IkiWiki.pm:152
msgid "Error"
msgstr "àªà«àª·àª¤àª¿"
@@ -380,7 +380,7 @@ msgstr "àªà«àª·àª¤àª¿"
#. translators: preprocessor directive name,
#. translators: the second a page name, the
#. translators: third a number.
-#: ../IkiWiki.pm:532
+#: ../IkiWiki.pm:549
#, perl-format
msgid "%s preprocessing loop detected on %s at depth %i"
msgstr "%s પર શà«àª§àª¾àª¯à«àª² લà«àªª %s પર àªàª²àª¾àªµà« àªà« %i àªàªàª¡àª¾àª£ પર"
diff --git a/po/ikiwiki.pot b/po/ikiwiki.pot
index 1b63d45dd..30c134d8f 100644
--- a/po/ikiwiki.pot
+++ b/po/ikiwiki.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-02-13 22:40-0500\n"
+"POT-Creation-Date: 2007-02-14 21:12-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -20,37 +20,37 @@ msgstr ""
msgid "You need to log in first."
msgstr ""
-#: ../IkiWiki/CGI.pm:262
+#: ../IkiWiki/CGI.pm:265
msgid "Preferences saved."
msgstr ""
-#: ../IkiWiki/CGI.pm:327
+#: ../IkiWiki/CGI.pm:330
#, perl-format
msgid "%s is not an editable page"
msgstr ""
-#: ../IkiWiki/CGI.pm:415 ../IkiWiki/Plugin/brokenlinks.pm:24
+#: ../IkiWiki/CGI.pm:418 ../IkiWiki/Plugin/brokenlinks.pm:24
#: ../IkiWiki/Plugin/inline.pm:164 ../IkiWiki/Plugin/opendiscussion.pm:17
#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:97
#: ../IkiWiki/Render.pm:165
msgid "discussion"
msgstr ""
-#: ../IkiWiki/CGI.pm:460
+#: ../IkiWiki/CGI.pm:463
#, perl-format
msgid "creating %s"
msgstr ""
-#: ../IkiWiki/CGI.pm:477 ../IkiWiki/CGI.pm:520
+#: ../IkiWiki/CGI.pm:480 ../IkiWiki/CGI.pm:506 ../IkiWiki/CGI.pm:539
#, perl-format
msgid "editing %s"
msgstr ""
-#: ../IkiWiki/CGI.pm:628
+#: ../IkiWiki/CGI.pm:647
msgid "You are banned."
msgstr ""
-#: ../IkiWiki/CGI.pm:660
+#: ../IkiWiki/CGI.pm:679
msgid "login failed, perhaps you need to turn on cookies?"
msgstr ""
@@ -71,36 +71,36 @@ msgstr ""
msgid "new"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:206
+#: ../IkiWiki/Plugin/aggregate.pm:211
#, perl-format
msgid "expiring %s (%s days old)"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:213
+#: ../IkiWiki/Plugin/aggregate.pm:218
#, perl-format
msgid "expiring %s"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:236
+#: ../IkiWiki/Plugin/aggregate.pm:241
#, perl-format
msgid "checking feed %s ..."
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:241
+#: ../IkiWiki/Plugin/aggregate.pm:246
#, perl-format
msgid "could not find feed at %s"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:250
+#: ../IkiWiki/Plugin/aggregate.pm:255
msgid "feed crashed XML::Feed!"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:273
+#: ../IkiWiki/Plugin/aggregate.pm:278
#, perl-format
msgid "processed ok at %s"
msgstr ""
-#: ../IkiWiki/Plugin/aggregate.pm:328
+#: ../IkiWiki/Plugin/aggregate.pm:333
#, perl-format
msgid "creating new page %s"
msgstr ""
@@ -256,47 +256,47 @@ msgid ""
"notifications"
msgstr ""
-#: ../IkiWiki/Render.pm:247 ../IkiWiki/Render.pm:267
+#: ../IkiWiki/Render.pm:251 ../IkiWiki/Render.pm:271
#, perl-format
msgid "skipping bad filename %s"
msgstr ""
-#: ../IkiWiki/Render.pm:307
+#: ../IkiWiki/Render.pm:311
#, perl-format
msgid "removing old page %s"
msgstr ""
-#: ../IkiWiki/Render.pm:326
+#: ../IkiWiki/Render.pm:330
#, perl-format
msgid "scanning %s"
msgstr ""
-#: ../IkiWiki/Render.pm:335
+#: ../IkiWiki/Render.pm:339
#, perl-format
msgid "rendering %s"
msgstr ""
-#: ../IkiWiki/Render.pm:347
+#: ../IkiWiki/Render.pm:351
#, perl-format
msgid "rendering %s, which links to %s"
msgstr ""
-#: ../IkiWiki/Render.pm:364
+#: ../IkiWiki/Render.pm:368
#, perl-format
msgid "rendering %s, which depends on %s"
msgstr ""
-#: ../IkiWiki/Render.pm:402
+#: ../IkiWiki/Render.pm:406
#, perl-format
msgid "rendering %s, to update its backlinks"
msgstr ""
-#: ../IkiWiki/Render.pm:414
+#: ../IkiWiki/Render.pm:418
#, perl-format
msgid "removing %s, no longer rendered by %s"
msgstr ""
-#: ../IkiWiki/Render.pm:440
+#: ../IkiWiki/Render.pm:444
#, perl-format
msgid "ikiwiki: cannot render %s"
msgstr ""
@@ -328,7 +328,7 @@ msgstr ""
#. translators: A list of one or more pages that were changed,
#. translators: And the name of the user making the change.
#. translators: This is used as the subject of a commit email.
-#: ../IkiWiki/UserInfo.pm:139
+#: ../IkiWiki/UserInfo.pm:146
#, perl-format
msgid "update of %s's %s by %s"
msgstr ""
@@ -369,11 +369,11 @@ msgstr ""
msgid "usage: ikiwiki [options] source dest"
msgstr ""
-#: ../IkiWiki.pm:103
+#: ../IkiWiki.pm:104
msgid "Must specify url to wiki with --url when using --cgi"
msgstr ""
-#: ../IkiWiki.pm:148 ../IkiWiki.pm:149
+#: ../IkiWiki.pm:151 ../IkiWiki.pm:152
msgid "Error"
msgstr ""
@@ -381,7 +381,7 @@ msgstr ""
#. translators: preprocessor directive name,
#. translators: the second a page name, the
#. translators: third a number.
-#: ../IkiWiki.pm:532
+#: ../IkiWiki.pm:549
#, perl-format
msgid "%s preprocessing loop detected on %s at depth %i"
msgstr ""
diff --git a/po/pl.po b/po/pl.po
index 8cdcd67d8..8b4f7b491 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ikiwiki 1.37\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-02-11 22:01-0500\n"
+"POT-Creation-Date: 2007-02-14 20:42-0500\n"
"PO-Revision-Date: 2007-01-05 16:33+100\n"
"Last-Translator: PaweÅ TÄcza \n"
"Language-Team: Debian L10n Polish \n"
@@ -20,37 +20,37 @@ msgstr ""
msgid "You need to log in first."
msgstr "Konieczne jest zalogowanie siÄ."
-#: ../IkiWiki/CGI.pm:262
+#: ../IkiWiki/CGI.pm:265
msgid "Preferences saved."
msgstr "Ustawienia zostaÅy zapisane."
-#: ../IkiWiki/CGI.pm:327
+#: ../IkiWiki/CGI.pm:330
#, perl-format
msgid "%s is not an editable page"
msgstr ""
-#: ../IkiWiki/CGI.pm:415 ../IkiWiki/Plugin/brokenlinks.pm:24
+#: ../IkiWiki/CGI.pm:418 ../IkiWiki/Plugin/brokenlinks.pm:24
#: ../IkiWiki/Plugin/inline.pm:164 ../IkiWiki/Plugin/opendiscussion.pm:17
#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:97
#: ../IkiWiki/Render.pm:165
msgid "discussion"
msgstr "dyskusja"
-#: ../IkiWiki/CGI.pm:460
+#: ../IkiWiki/CGI.pm:463
#, perl-format
msgid "creating %s"
msgstr "tworzenie strony %s"
-#: ../IkiWiki/CGI.pm:477 ../IkiWiki/CGI.pm:520
+#: ../IkiWiki/CGI.pm:480 ../IkiWiki/CGI.pm:506 ../IkiWiki/CGI.pm:539
#, perl-format
msgid "editing %s"
msgstr "edycja strony %s"
-#: ../IkiWiki/CGI.pm:628
+#: ../IkiWiki/CGI.pm:647
msgid "You are banned."
msgstr "DostÄp zostaÅ zabroniony przez administratora."
-#: ../IkiWiki/CGI.pm:660
+#: ../IkiWiki/CGI.pm:679
msgid "login failed, perhaps you need to turn on cookies?"
msgstr ""
@@ -71,36 +71,36 @@ msgstr "wpisy"
msgid "new"
msgstr "nowy wpis"
-#: ../IkiWiki/Plugin/aggregate.pm:206
+#: ../IkiWiki/Plugin/aggregate.pm:211
#, perl-format
msgid "expiring %s (%s days old)"
msgstr "wygasajÄ
cy wpis %s (ma już %s dni)"
-#: ../IkiWiki/Plugin/aggregate.pm:213
+#: ../IkiWiki/Plugin/aggregate.pm:218
#, perl-format
msgid "expiring %s"
msgstr "wygasajÄ
cy wpis %s"
-#: ../IkiWiki/Plugin/aggregate.pm:236
+#: ../IkiWiki/Plugin/aggregate.pm:241
#, perl-format
msgid "checking feed %s ..."
msgstr "sprawdzanie kanaÅu RSS %s\t..."
-#: ../IkiWiki/Plugin/aggregate.pm:241
+#: ../IkiWiki/Plugin/aggregate.pm:246
#, perl-format
msgid "could not find feed at %s"
msgstr "nie znaleziono kanaÅu RSS pod adresem %s"
-#: ../IkiWiki/Plugin/aggregate.pm:250
+#: ../IkiWiki/Plugin/aggregate.pm:255
msgid "feed crashed XML::Feed!"
msgstr "awaria kanaÅu RSS w module XML::Feed!"
-#: ../IkiWiki/Plugin/aggregate.pm:273
+#: ../IkiWiki/Plugin/aggregate.pm:278
#, perl-format
msgid "processed ok at %s"
msgstr "przetworzony kanaÅ RSS w dniu %s"
-#: ../IkiWiki/Plugin/aggregate.pm:328
+#: ../IkiWiki/Plugin/aggregate.pm:333
#, perl-format
msgid "creating new page %s"
msgstr "tworzenie nowej strony %s"
@@ -267,47 +267,47 @@ msgstr ""
"Brak możliwoÅci wysÅania powiadomieÅ przez post-commit SVN-a z powodu "
"nieustawionego parametru REV"
-#: ../IkiWiki/Render.pm:247 ../IkiWiki/Render.pm:267
+#: ../IkiWiki/Render.pm:251 ../IkiWiki/Render.pm:271
#, perl-format
msgid "skipping bad filename %s"
msgstr "pomijanie nieprawidÅowego pliku %s"
-#: ../IkiWiki/Render.pm:307
+#: ../IkiWiki/Render.pm:311
#, perl-format
msgid "removing old page %s"
msgstr "usuwanie starej strony %s"
-#: ../IkiWiki/Render.pm:326
+#: ../IkiWiki/Render.pm:330
#, perl-format
msgid "scanning %s"
msgstr "przeszukiwanie strony %s"
-#: ../IkiWiki/Render.pm:335
+#: ../IkiWiki/Render.pm:339
#, perl-format
msgid "rendering %s"
msgstr "tworzenie strony %s"
-#: ../IkiWiki/Render.pm:347
+#: ../IkiWiki/Render.pm:351
#, perl-format
msgid "rendering %s, which links to %s"
msgstr "tworzenie strony %s z odnoÅnikiem do strony %s"
-#: ../IkiWiki/Render.pm:364
+#: ../IkiWiki/Render.pm:368
#, perl-format
msgid "rendering %s, which depends on %s"
msgstr "tworzenie strony %s zależÄ
cej od strony %s"
-#: ../IkiWiki/Render.pm:402
+#: ../IkiWiki/Render.pm:406
#, perl-format
msgid "rendering %s, to update its backlinks"
msgstr "tworzenie strony %s w celu aktualizacji jej powrotnych odnoÅników"
-#: ../IkiWiki/Render.pm:414
+#: ../IkiWiki/Render.pm:418
#, perl-format
msgid "removing %s, no longer rendered by %s"
msgstr "usuwanie strony %s nie tworzonej już przez %s"
-#: ../IkiWiki/Render.pm:440
+#: ../IkiWiki/Render.pm:444
#, perl-format
msgid "ikiwiki: cannot render %s"
msgstr "ikiwiki: awaria w trakcie tworzenie strony %s"
@@ -339,7 +339,7 @@ msgstr "gotowe"
#. translators: A list of one or more pages that were changed,
#. translators: And the name of the user making the change.
#. translators: This is used as the subject of a commit email.
-#: ../IkiWiki/UserInfo.pm:139
+#: ../IkiWiki/UserInfo.pm:146
#, perl-format
msgid "update of %s's %s by %s"
msgstr "aktualizacja stron wiki %s %s przez użytkownika %s"
@@ -380,13 +380,13 @@ msgstr "strona pomyÅlnie utworzona %s"
msgid "usage: ikiwiki [options] source dest"
msgstr "użycie: ikiwiki [parametry] źródÅo cel"
-#: ../IkiWiki.pm:103
+#: ../IkiWiki.pm:104
msgid "Must specify url to wiki with --url when using --cgi"
msgstr ""
"Użycie parametru --cgi wymaga podania adresu URL do wiki za pomocÄ
parametru "
"--url"
-#: ../IkiWiki.pm:148 ../IkiWiki.pm:149
+#: ../IkiWiki.pm:151 ../IkiWiki.pm:152
msgid "Error"
msgstr "BÅÄ
d"
@@ -394,7 +394,7 @@ msgstr "BÅÄ
d"
#. translators: preprocessor directive name,
#. translators: the second a page name, the
#. translators: third a number.
-#: ../IkiWiki.pm:532
+#: ../IkiWiki.pm:549
#, perl-format
msgid "%s preprocessing loop detected on %s at depth %i"
msgstr "polecenie preprocesora %s wykryte w %s na gÅÄbokoÅci %i"
diff --git a/po/sv.po b/po/sv.po
index 6717efb92..e07799328 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ikiwiki\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-02-11 22:01-0500\n"
+"POT-Creation-Date: 2007-02-14 20:42-0500\n"
"PO-Revision-Date: 2007-01-10 23:47+0100\n"
"Last-Translator: Daniel Nylander \n"
"Language-Team: Swedish \n"
@@ -19,37 +19,37 @@ msgstr ""
msgid "You need to log in first."
msgstr "Du måste logga in först."
-#: ../IkiWiki/CGI.pm:262
+#: ../IkiWiki/CGI.pm:265
msgid "Preferences saved."
msgstr "Inställningar sparades."
-#: ../IkiWiki/CGI.pm:327
+#: ../IkiWiki/CGI.pm:330
#, perl-format
msgid "%s is not an editable page"
msgstr ""
-#: ../IkiWiki/CGI.pm:415 ../IkiWiki/Plugin/brokenlinks.pm:24
+#: ../IkiWiki/CGI.pm:418 ../IkiWiki/Plugin/brokenlinks.pm:24
#: ../IkiWiki/Plugin/inline.pm:164 ../IkiWiki/Plugin/opendiscussion.pm:17
#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:97
#: ../IkiWiki/Render.pm:165
msgid "discussion"
msgstr "diskussion"
-#: ../IkiWiki/CGI.pm:460
+#: ../IkiWiki/CGI.pm:463
#, perl-format
msgid "creating %s"
msgstr "skapar %s"
-#: ../IkiWiki/CGI.pm:477 ../IkiWiki/CGI.pm:520
+#: ../IkiWiki/CGI.pm:480 ../IkiWiki/CGI.pm:506 ../IkiWiki/CGI.pm:539
#, perl-format
msgid "editing %s"
msgstr "redigerar %s"
-#: ../IkiWiki/CGI.pm:628
+#: ../IkiWiki/CGI.pm:647
msgid "You are banned."
msgstr "Du är bannlyst."
-#: ../IkiWiki/CGI.pm:660
+#: ../IkiWiki/CGI.pm:679
msgid "login failed, perhaps you need to turn on cookies?"
msgstr ""
@@ -70,36 +70,36 @@ msgstr "inlägg"
msgid "new"
msgstr "ny"
-#: ../IkiWiki/Plugin/aggregate.pm:206
+#: ../IkiWiki/Plugin/aggregate.pm:211
#, perl-format
msgid "expiring %s (%s days old)"
msgstr "låter %s gå ut (%s dagar gammal)"
-#: ../IkiWiki/Plugin/aggregate.pm:213
+#: ../IkiWiki/Plugin/aggregate.pm:218
#, perl-format
msgid "expiring %s"
msgstr "låter %s gå ut"
-#: ../IkiWiki/Plugin/aggregate.pm:236
+#: ../IkiWiki/Plugin/aggregate.pm:241
#, perl-format
msgid "checking feed %s ..."
msgstr "kontrollerar kanalen %s ..."
-#: ../IkiWiki/Plugin/aggregate.pm:241
+#: ../IkiWiki/Plugin/aggregate.pm:246
#, perl-format
msgid "could not find feed at %s"
msgstr "kunde inte hitta kanalen på %s"
-#: ../IkiWiki/Plugin/aggregate.pm:250
+#: ../IkiWiki/Plugin/aggregate.pm:255
msgid "feed crashed XML::Feed!"
msgstr "kanalen kraschade XML::Feed!"
-#: ../IkiWiki/Plugin/aggregate.pm:273
+#: ../IkiWiki/Plugin/aggregate.pm:278
#, perl-format
msgid "processed ok at %s"
msgstr "behandlad ok på %s"
-#: ../IkiWiki/Plugin/aggregate.pm:328
+#: ../IkiWiki/Plugin/aggregate.pm:333
#, perl-format
msgid "creating new page %s"
msgstr "skapar nya sidan %s"
@@ -259,47 +259,47 @@ msgstr ""
"REV är inte inställt, kör inte från svn post-commit-hook, kan inte skicka "
"notifieringar"
-#: ../IkiWiki/Render.pm:247 ../IkiWiki/Render.pm:267
+#: ../IkiWiki/Render.pm:251 ../IkiWiki/Render.pm:271
#, perl-format
msgid "skipping bad filename %s"
msgstr "hoppar över felaktigt filnamn %s"
-#: ../IkiWiki/Render.pm:307
+#: ../IkiWiki/Render.pm:311
#, perl-format
msgid "removing old page %s"
msgstr "tar bort gammal sida %s"
-#: ../IkiWiki/Render.pm:326
+#: ../IkiWiki/Render.pm:330
#, perl-format
msgid "scanning %s"
msgstr "söker av %s"
-#: ../IkiWiki/Render.pm:335
+#: ../IkiWiki/Render.pm:339
#, perl-format
msgid "rendering %s"
msgstr "ritar upp %s"
-#: ../IkiWiki/Render.pm:347
+#: ../IkiWiki/Render.pm:351
#, perl-format
msgid "rendering %s, which links to %s"
msgstr "ritar upp %s, vilken länkar till %s"
-#: ../IkiWiki/Render.pm:364
+#: ../IkiWiki/Render.pm:368
#, perl-format
msgid "rendering %s, which depends on %s"
msgstr "ritar upp %s, vilken är beroende av %s"
-#: ../IkiWiki/Render.pm:402
+#: ../IkiWiki/Render.pm:406
#, perl-format
msgid "rendering %s, to update its backlinks"
msgstr "ritar upp %s, för att uppdatera dess bakåtlänkar"
-#: ../IkiWiki/Render.pm:414
+#: ../IkiWiki/Render.pm:418
#, perl-format
msgid "removing %s, no longer rendered by %s"
msgstr "tar bort %s, som inte längre ritas upp av %s"
-#: ../IkiWiki/Render.pm:440
+#: ../IkiWiki/Render.pm:444
#, perl-format
msgid "ikiwiki: cannot render %s"
msgstr "ikiwiki: kan inte rita upp %s"
@@ -331,7 +331,7 @@ msgstr "klar"
#. translators: A list of one or more pages that were changed,
#. translators: And the name of the user making the change.
#. translators: This is used as the subject of a commit email.
-#: ../IkiWiki/UserInfo.pm:139
+#: ../IkiWiki/UserInfo.pm:146
#, perl-format
msgid "update of %s's %s by %s"
msgstr "uppdatering av %s, %s av %s"
@@ -372,11 +372,11 @@ msgstr "generering av %s lyckades"
msgid "usage: ikiwiki [options] source dest"
msgstr "användning: ikiwiki [flaggor] källa mål"
-#: ../IkiWiki.pm:103
+#: ../IkiWiki.pm:104
msgid "Must specify url to wiki with --url when using --cgi"
msgstr "Måste ange url till wiki med --url när --cgi används"
-#: ../IkiWiki.pm:148 ../IkiWiki.pm:149
+#: ../IkiWiki.pm:151 ../IkiWiki.pm:152
msgid "Error"
msgstr "Fel"
@@ -384,7 +384,7 @@ msgstr "Fel"
#. translators: preprocessor directive name,
#. translators: the second a page name, the
#. translators: third a number.
-#: ../IkiWiki.pm:532
+#: ../IkiWiki.pm:549
#, perl-format
msgid "%s preprocessing loop detected on %s at depth %i"
msgstr "%s förbehandlingsslinga detekterades på %s, djup %i"
diff --git a/po/vi.po b/po/vi.po
index 787336ca0..3395517fd 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: ikiwiki\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-02-11 22:01-0500\n"
+"POT-Creation-Date: 2007-02-14 20:42-0500\n"
"PO-Revision-Date: 2007-01-13 15:31+1030\n"
"Last-Translator: Clytie Siddall \n"
"Language-Team: Vietnamese \n"
@@ -20,37 +20,37 @@ msgstr ""
msgid "You need to log in first."
msgstr "TrÆ°á»c tiên bạn cần phải ÄÄng nháºp."
-#: ../IkiWiki/CGI.pm:262
+#: ../IkiWiki/CGI.pm:265
msgid "Preferences saved."
msgstr "Tùy thÃch Äã Äược lÆ°u."
-#: ../IkiWiki/CGI.pm:327
+#: ../IkiWiki/CGI.pm:330
#, perl-format
msgid "%s is not an editable page"
msgstr ""
-#: ../IkiWiki/CGI.pm:415 ../IkiWiki/Plugin/brokenlinks.pm:24
+#: ../IkiWiki/CGI.pm:418 ../IkiWiki/Plugin/brokenlinks.pm:24
#: ../IkiWiki/Plugin/inline.pm:164 ../IkiWiki/Plugin/opendiscussion.pm:17
#: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:97
#: ../IkiWiki/Render.pm:165
msgid "discussion"
msgstr "thảo luáºn"
-#: ../IkiWiki/CGI.pm:460
+#: ../IkiWiki/CGI.pm:463
#, perl-format
msgid "creating %s"
msgstr "Äang tạo %s"
-#: ../IkiWiki/CGI.pm:477 ../IkiWiki/CGI.pm:520
+#: ../IkiWiki/CGI.pm:480 ../IkiWiki/CGI.pm:506 ../IkiWiki/CGI.pm:539
#, perl-format
msgid "editing %s"
msgstr "Äang sá»a %s"
-#: ../IkiWiki/CGI.pm:628
+#: ../IkiWiki/CGI.pm:647
msgid "You are banned."
msgstr "Bạn bỠcấm ra."
-#: ../IkiWiki/CGI.pm:660
+#: ../IkiWiki/CGI.pm:679
msgid "login failed, perhaps you need to turn on cookies?"
msgstr ""
@@ -71,36 +71,36 @@ msgstr "bà i"
msgid "new"
msgstr "má»i"
-#: ../IkiWiki/Plugin/aggregate.pm:206
+#: ../IkiWiki/Plugin/aggregate.pm:211
#, perl-format
msgid "expiring %s (%s days old)"
msgstr "Äang mãn hạn %s (cÅ© %s ngà y)"
-#: ../IkiWiki/Plugin/aggregate.pm:213
+#: ../IkiWiki/Plugin/aggregate.pm:218
#, perl-format
msgid "expiring %s"
msgstr "Äang mãn hạn %s"
-#: ../IkiWiki/Plugin/aggregate.pm:236
+#: ../IkiWiki/Plugin/aggregate.pm:241
#, perl-format
msgid "checking feed %s ..."
msgstr "Äang kiá»m tra nguá»n tin %s ..."
-#: ../IkiWiki/Plugin/aggregate.pm:241
+#: ../IkiWiki/Plugin/aggregate.pm:246
#, perl-format
msgid "could not find feed at %s"
msgstr "không tìm thấy nguá»n tin á» %s"
-#: ../IkiWiki/Plugin/aggregate.pm:250
+#: ../IkiWiki/Plugin/aggregate.pm:255
msgid "feed crashed XML::Feed!"
msgstr "nguá»n tin Äã gây ra XML::Feed sụp Äá»."
-#: ../IkiWiki/Plugin/aggregate.pm:273
+#: ../IkiWiki/Plugin/aggregate.pm:278
#, perl-format
msgid "processed ok at %s"
msgstr "Äã xá» lý Äược á» %s"
-#: ../IkiWiki/Plugin/aggregate.pm:328
+#: ../IkiWiki/Plugin/aggregate.pm:333
#, perl-format
msgid "creating new page %s"
msgstr "Äang tạo trang má»i %s"
@@ -259,47 +259,47 @@ msgid ""
msgstr ""
"ChÆ°a Äặt REV, không chạy từ móc sau gà i và o nên không thá» gá»i thông báo"
-#: ../IkiWiki/Render.pm:247 ../IkiWiki/Render.pm:267
+#: ../IkiWiki/Render.pm:251 ../IkiWiki/Render.pm:271
#, perl-format
msgid "skipping bad filename %s"
msgstr "Äang bá» qua tên táºp tin sai %s"
-#: ../IkiWiki/Render.pm:307
+#: ../IkiWiki/Render.pm:311
#, perl-format
msgid "removing old page %s"
msgstr "Äang gỡ bá» trang cÅ© %s"
-#: ../IkiWiki/Render.pm:326
+#: ../IkiWiki/Render.pm:330
#, perl-format
msgid "scanning %s"
msgstr "Äang quét %s"
-#: ../IkiWiki/Render.pm:335
+#: ../IkiWiki/Render.pm:339
#, perl-format
msgid "rendering %s"
msgstr "Äang vẽ %s"
-#: ../IkiWiki/Render.pm:347
+#: ../IkiWiki/Render.pm:351
#, perl-format
msgid "rendering %s, which links to %s"
msgstr "Äang vẽ %s mà liên kết tá»i %s"
-#: ../IkiWiki/Render.pm:364
+#: ../IkiWiki/Render.pm:368
#, perl-format
msgid "rendering %s, which depends on %s"
msgstr "Äang vẽ %s mà phụ thuá»c và o %s"
-#: ../IkiWiki/Render.pm:402
+#: ../IkiWiki/Render.pm:406
#, perl-format
msgid "rendering %s, to update its backlinks"
msgstr "Äang vẽ %s Äá» cáºp nháºt các liên kết ngược của nó"
-#: ../IkiWiki/Render.pm:414
+#: ../IkiWiki/Render.pm:418
#, perl-format
msgid "removing %s, no longer rendered by %s"
msgstr "Äang gỡ bá» %s, không còn Äược vẽ lại bá»i %s"
-#: ../IkiWiki/Render.pm:440
+#: ../IkiWiki/Render.pm:444
#, perl-format
msgid "ikiwiki: cannot render %s"
msgstr "ikiwiki: không thỠvẽ %s"
@@ -331,7 +331,7 @@ msgstr "xong"
#. translators: A list of one or more pages that were changed,
#. translators: And the name of the user making the change.
#. translators: This is used as the subject of a commit email.
-#: ../IkiWiki/UserInfo.pm:139
+#: ../IkiWiki/UserInfo.pm:146
#, perl-format
msgid "update of %s's %s by %s"
msgstr "cáºp nháºt %2$s của %1$s bá»i %3$s"
@@ -372,12 +372,12 @@ msgstr "%s Äã Äược tạo ra"
msgid "usage: ikiwiki [options] source dest"
msgstr "cách sá» dụng: ikiwiki [tùy chá»n] nguá»n ÄÃch"
-#: ../IkiWiki.pm:103
+#: ../IkiWiki.pm:104
msgid "Must specify url to wiki with --url when using --cgi"
msgstr ""
"Cần phải xác Äá»nh Äá»a chá» URL tá»i wiki vá»i « --url » khi dùng « --cgi »"
-#: ../IkiWiki.pm:148 ../IkiWiki.pm:149
+#: ../IkiWiki.pm:151 ../IkiWiki.pm:152
msgid "Error"
msgstr "Lá»i"
@@ -385,7 +385,7 @@ msgstr "Lá»i"
#. translators: preprocessor directive name,
#. translators: the second a page name, the
#. translators: third a number.
-#: ../IkiWiki.pm:532
+#: ../IkiWiki.pm:549
#, perl-format
msgid "%s preprocessing loop detected on %s at depth %i"
msgstr "vòng lặp tiá»n xá» lý %s Äược phát hiá»n trên %s á» Äá» sâu %i"
diff --git a/templates/editpage.tmpl b/templates/editpage.tmpl
index f63a4b089..68b7d1942 100644
--- a/templates/editpage.tmpl
+++ b/templates/editpage.tmpl
@@ -21,6 +21,18 @@ Conflict markers have been inserted into the page content. Reconcile the
conflict and commit again to save your changes.
+
+
+Failed to save your changes.
+
+
+Your changes were not able to be saved to disk. The system gave the error:
+
+
+
+Your changes are preserved below, and you can try again to save them.
+
+