= ソースを直接改造したくないでござる。絶対に改造したくないでござる。 =
ソースに手を入れるとバージョンアップ処理が面倒になるので、極力やりたくないものだ。
開発元に送るなら良いが今回はこのサイト独自の変更点である。
このwikiのシステムメッセージを一部入れ換えて欲しいという要望が多いため、何とかソースや翻訳リソースファイルに手を入れずに差し替えられないかと言うことでこんなものをでっち上げた。

{{{#!highlight python
class Config(FarmConfig):
    ...
    our_text_table = {
        u"If you do not have an account, <a href=\"%(userprefslink)s\">you can create one now</a>. ":
            u"",
        u"<a href=\"%(sendmypasswordlink)s\">Forgot your password?</a>":
            u"<a href=\"%(sendmypasswordlink)s\">パスワードをお忘れですか?</a>",
        u"(Use FirstnameLastname)":
            u"",
        }

# こちらはあればFarmConfigのファイルに
# dirty hack to replace localized text
def steal_getText():
    import MoinMoin.i18n
    getText_ = MoinMoin.i18n.getText
    def getText(original, request, lang, **kw):
        try:
            val = request.cfg.our_text_table[original]
            if isinstance(val, (str, unicode)):
                return val
            elif isinstance(val, dict) and val.has_key(lang):
                return val[lang]
        except (AttributeError, KeyError):
            pass
        return getText_(original, request, lang, **kw)
    MoinMoin.i18n.getText = getText
steal_getText()
}}}

設定ファイル上でgettextを呼び出すためのメソッドをラッピングして差し替えたい文字列に対する処理を横取りするようになっている。

2011/03/04修正: 辞書が渡されたときに、辞書内にない言語は処理せずにgettextに渡すように修正