http://groups.yahoo.com/group/zope/message/145449
このひととまったく同じ問題でZMILocalizerが動かないの。
手っ取り早く言うと,New Style Classではクラス自体の__dict__を勝手に書き換えると怒られる,ということね。ZODB 3.3でNew Style Classが使えるようになり,ExtentionClassがNew Style Classベースになった影響ですな。
こんなコードを書いて実験すると分かる。
New Style Classを使った場合
>>> class nsc(object): ... pass ... >>> >>> nsc.__dict__['foo'] = 'foo' Traceback (most recent call last): File "<stdin>", line 1, in ? TypeError: object does not support item assignment
というようにエラーになります。
New Style Classでない場合
>>> class non_nsc: ... pass ... >>> >>> non_nsc.__dict__['foo'] = 'foo'
さて,どうしたものか。
しかしPythonは奥深いなあ。
追記。
__dict__をむりやり変えようとしないで,setattrするとOKだよとIRCの#zope-jaで教えてもらった(ありがとう!)。で,早速やってみると,なんということでしょう。今まで日本語化されていなかったZMIのタブが...!
その後MLにも同種の指摘があった。ということで,ZMILocalizerの2.8対応ということでCommit。2.7で動くことも確認済み。 http://sourceforge.jp/projects/zope-j10n/ からダウンロードして試してみてください。