summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorintrigeri <intrigeri@boum.org>2008-10-15 07:12:28 +0200
committerintrigeri <intrigeri@boum.org>2008-10-18 15:49:13 +0200
commit7b7865150f1670e92d6d81ece36902df7028ec97 (patch)
treeb9f67492f26f9d7385d5695aad304e5dd820824f
parent93b316f7c1ec87170882ebf6ebae657f41e5f7e3 (diff)
po plugin: add correct dependencies on pages using OTHERLANGUAGES
Signed-off-by: intrigeri <intrigeri@boum.org>
-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