ログイン
編集不可のページディスカッション情報添付ファイル
ytoku/daily-record/2011-02-06

MMA

ソースを直接改造したくないでござる。絶対に改造したくないでござる。

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

ytoku/daily-record/2011-02-06 (最終更新日時 2011-03-04 03:01:05 更新者 ytoku)