Example #1
0
def translate_wikilinks(wikitext, context):
    for wikilink in clean_links(wikitext.wikilinks,
                                wikitext.language,
                                prefixes=context.prefixes):
        if not str(wikilink) in wikitext.wikitext:
            continue
        new_wikilink = Wikilink(wikilink.title + "/" + wikitext.language)
        for link, value in context.wikilink_cache.items():
            if wikilink.title == link:
                new_wikilink.anchor = wikilink.anchor
            elif wikilink.title in value["aliases"]:
                new_wikilink.anchor = value["aliases"][wikilink.title]
            else:
                continue

            if wikilink.label:
                new_wikilink.label = wikilink.label
            else:
                if value["displaytitle"][wikitext.language] is None:
                    new_wikilink.label = wikilink.title
                else:
                    new_wikilink.label = value["displaytitle"][
                        wikitext.language]
            break

        wikitext.wikitext.replace(str(wikilink), str(new_wikilink))
        if str(wikilink) in wikitext.wikitext:
            # Yes we're doing it twice because mw doesn't catch everything in
            # the first round
            wikitext.wikitext.replace(str(wikilink), str(new_wikilink))
    return wikitext.wikitext
Example #2
0
def translate_wikilinks(wikitext, stack):
    for wikilink in clean_links(wikitext.wikilinks, wikitext.language, prefixes=stack.prefixes):
        if not str(wikilink) in wikitext.wikitext:
            continue
        new_wikilink = Wikilink(wikilink.title+"/"+wikitext.language)
        for link, value in stack.wikilink_cache.items():
            if wikilink.title == link:
                new_wikilink.anchor = wikilink.anchor
            elif wikilink.title in value["aliases"]:
                new_wikilink.anchor = value["aliases"][wikilink.title]
            else:
                continue

            if wikilink.label:
                new_wikilink.label = wikilink.label
            else:
                if value["displaytitle"][wikitext.language] is None:
                    new_wikilink.label = wikilink.title
                else:
                    new_wikilink.label = value["displaytitle"][wikitext.language]
            break
        wikitext.wikitext.replace(str(wikilink), str(new_wikilink))
    return wikitext.wikitext
Example #3
0
 def scan_all(self):
     if self.wikilinks:
         self.prefixes = self.get_prefixes()
         for language, wikilinks in self.wikilinks.items():
             self.wikilinks[language] = clean_links(wikilinks, language, prefixes=self.prefixes)