ソースを直接改造したくないでござる。絶対に改造したくないでござる。
ソースに手を入れるとバージョンアップ処理が面倒になるので、極力やりたくないものだ。 開発元に送るなら良いが今回はこのサイト独自の変更点である。 このwikiのシステムメッセージを一部入れ換えて欲しいという要望が多いため、何とかソースや翻訳リソースファイルに手を入れずに差し替えられないかと言うことでこんなものをでっち上げた。
行番号表示/非表示切替
1 class Config(FarmConfig):
2 ...
3 our_text_table = {
4 u"If you do not have an account, <a href=\"%(userprefslink)s\">you can create one now</a>. ":
5 u"",
6 u"<a href=\"%(sendmypasswordlink)s\">Forgot your password?</a>":
7 u"<a href=\"%(sendmypasswordlink)s\">パスワードをお忘れですか?</a>",
8 u"(Use FirstnameLastname)":
9 u"",
10 }
11
12 # こちらはあればFarmConfigのファイルに
13 # dirty hack to replace localized text
14 def steal_getText():
15 import MoinMoin.i18n
16 getText_ = MoinMoin.i18n.getText
17 def getText(original, request, lang, **kw):
18 try:
19 val = request.cfg.our_text_table[original]
20 if isinstance(val, (str, unicode)):
21 return val
22 elif isinstance(val, dict) and val.has_key(lang):
23 return val[lang]
24 except (AttributeError, KeyError):
25 pass
26 return getText_(original, request, lang, **kw)
27 MoinMoin.i18n.getText = getText
28 steal_getText()
設定ファイル上でgettextを呼び出すためのメソッドをラッピングして差し替えたい文字列に対する処理を横取りするようになっている。
2011/03/04修正: 辞書が渡されたときに、辞書内にない言語は処理せずにgettextに渡すように修正