po(mybestlink): avoid linking to non-existent translation pages.
authorintrigeri <intrigeri@boum.org>
Mon, 2 Aug 2010 10:09:15 +0000 (12:09 +0200)
committerintrigeri <intrigeri@boum.org>
Mon, 2 Aug 2010 10:52:10 +0000 (12:52 +0200)
IkiWiki/Plugin/po.pm

index a2010e1bebcd1b00d19db09f7d0f90a25320fd82..6b708e850c8d9f23d5f620cd16e172bd25cc4b31 100644 (file)
@@ -583,7 +583,7 @@ sub mybestlink ($$) {
        my $res=$origsubs{'bestlink'}->(masterpage($page), $link);
        my @caller = caller(1);
        if (length $res
-           && istranslatable($res)
+           && istranslatedto($res, lang($page))
            && istranslation($page)
            &&  !(exists $caller[3] && defined $caller[3]
                  && ($caller[3] eq "IkiWiki::PageSpec::match_link"))) {
@@ -764,6 +764,15 @@ sub istranslatable ($) {
        return;
 }
 
+sub istranslatedto ($$) {
+       my $page=shift;
+       my $destlang = shift;
+
+       $page=~s#^/##;
+       return 0 unless istranslatable($page);
+       exists $pagesources{otherlanguage_page($page, $destlang)};
+}
+
 sub _istranslation ($) {
        my $page=shift;