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
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
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)