summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--IkiWiki/Plugin/po.pm12
-rw-r--r--doc/plugins/po.mdwn6
2 files changed, 15 insertions, 3 deletions
diff --git a/IkiWiki/Plugin/po.pm b/IkiWiki/Plugin/po.pm
index 716aa9151..9a25ff602 100644
--- a/IkiWiki/Plugin/po.pm
+++ b/IkiWiki/Plugin/po.pm
@@ -368,6 +368,18 @@ sub pagetemplate (@) { #{{{
}
if ($template->query(name => "otherlanguages")) {
$template->param(otherlanguages => [otherlanguages($page)]);
+ if (istranslatable($page)) {
+ foreach my $translation (values %{$translations{$page}}) {
+ add_depends($page, $translation);
+ }
+ }
+ elsif (istranslation($page)) {
+ my ($masterpage, $curlang) = ($page =~ /(.*)[.]([a-z]{2})$/);
+ add_depends($page, $masterpage);
+ foreach my $translation (values %{$translations{$masterpage}}) {
+ add_depends($page, $translation);
+ }
+ }
}
} # }}}
diff --git a/doc/plugins/po.mdwn b/doc/plugins/po.mdwn
index e8c6975b0..b3c50a925 100644
--- a/doc/plugins/po.mdwn
+++ b/doc/plugins/po.mdwn
@@ -191,9 +191,9 @@ TODO
OTHERLANGUAGES dependencies
---------------------------
-Pages using `OTHERLANGUAGES` must depend on any "master" and "slave"
-pages whose status is being displayed. It will trigger dependency
-loops; how to sort this out?
+Pages using `OTHERLANGUAGES` depend on any "master" and "slave" pages
+whose status is being displayed. It is supposed to trigger dependency
+loops, but no practical bugs were noticed yet.
Should pages using the `OTHERLANGUAGES` template loop be declared as
linking to the same page in other versions? To be rigorous, they