= ソースを直接改造したくないでござる。絶対に改造したくないでござる。 = ソースに手を入れるとバージョンアップ処理が面倒になるので、極力やりたくないものだ。 開発元に送るなら良いが今回はこのサイト独自の変更点である。 この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に渡すように修正