iniAdminプラグインとTrac0.11.2.1.ja1について


【2009/01/16加筆】
以下の情報は正しい対処方法ではありません!!
インストールしたtractrac/wiki/default-pages/TracJa を参照しiniAdminへpatchを当ててください!
trac-hacksの該当チケット

Trac 0.11.2.1.ja1でiniAdminプラグインを利用すると、mimeviewとtracのセクションの編集しようとするとエラーになります。Trac 0.11.1.1.ja1では問題は発生しません。
0.11.1.1.ja1では日本語文字列の先頭にunicodeを示すuが付いていたのですが、0.11.2.1.ja1では何故か外れてしまったのが原因のようです。

対処するには
/trac/env.py
/trac/perm.py
/trac/web/chrome.py
/trac/mimeview/api.py
/trac/mimeview/enscript.py
/trac/mimeview/php.py
/trac/mimeview/pygments.py
/trac/mimeview/silvercity.py
を修正する必要があります。

Trac Lightning2.1alpha1から差分は、こんな感じ・・・

Index: env.py
===================================================================
--- env.py
+++ env.py
@@ -73,7 +73,7 @@
     setup_participants = ExtensionPoint(IEnvironmentSetupParticipant)
 
     shared_plugins_dir = PathOption('inherit', 'plugins_dir', '',
-        """共有するプラグインをおくディレクトリのパスを指定します。
+        u"""共有するプラグインをおくディレクトリのパスを指定します。
         
         このディレクトリに配置されたプラグインは、 Environemnt の `plugins`
         ディレクトリのプラグインに加えて、
@@ -82,7 +82,7 @@
         (''0.11 以降'')""")
 
     base_url = Option('trac', 'base_url', '',
-        """Trac がデプロイされている URL を設定します。
+        u"""Trac がデプロイされている URL を設定します。
         
         ドキュメントを生成するときに使用される base URL です。
         Web でブラウズできるコンテキスト外で利用されます。たとえば、
@@ -91,7 +91,7 @@
 
     base_url_for_redirect = BoolOption('trac', 'use_base_url_for_redirect',
             False, 
-        """`[trac] base_url` をリダイレクトにも使用するか設定します。
+        u"""`[trac] base_url` をリダイレクトにも使用するか設定します。
         
         Trac を HTTP プロキシの背後で動作させる設定下では、
         自動ではアクセスに使用された URL を再構成できないため、
@@ -101,7 +101,7 @@
         使いづらくなります。 ''(0.10.5 以降)''""")
 
     secure_cookies = BoolOption('trac', 'secure_cookies', False,
-        """Cookie を HTTPS 接続で使用します。
+        u"""Cookie を HTTPS 接続で使用します。
         
         True に設定された場合、すべての Cookie に `secure` フラグを付与
         することで、 HTTPS 接続でサーバに送信されるようにします。このオ
@@ -109,42 +109,42 @@
         にしてください。 (''since 0.11.2 以降'')""")
 
     project_name = Option('project', 'name', 'My Project',
-        """プロジェクトの名前を設定します。""")
+        u"""プロジェクトの名前を設定します。""")
 
     project_description = Option('project', 'descr', 'My example project',
-        """プロジェクトの概要を設定します。""")
+        u"""プロジェクトの概要を設定します。""")
 
     project_url = Option('project', 'url', '',
-        """プロジェクトのメインとなる Web サイトの URL を設定します。
+        u"""プロジェクトのメインとなる Web サイトの URL を設定します。
         通常、 `base_url` が示すウェブサイトを指定します。""")
 
     project_admin = Option('project', 'admin', '',
-        """プロジェクトの管理者のメールアドレスを設定します。""")
+        u"""プロジェクトの管理者のメールアドレスを設定します。""")
 
     project_footer = Option('project', 'footer',
                             'Visit the Trac open source project at<br />'
                             '<a href="http://trac.edgewall.org/">'
                             'http://trac.edgewall.org/</a>',
-        """ページのフッタに表示するテキストを指定します (右詰めで表示されます)。""")
+        u"""ページのフッタに表示するテキストを指定します (右詰めで表示されます)。""")
 
     project_icon = Option('project', 'icon', 'common/trac.ico',
-        """プロジェクトのアイコンの URL を指定します。""")
+        u"""プロジェクトのアイコンの URL を指定します。""")
 
     log_type = Option('logging', 'log_type', 'none',
-        """出力するログの種類を設定します。
+        u"""出力するログの種類を設定します。
         
         値は (`none`, `file`, `stderr`, `syslog`, `winlog`) の、どれかでなければなりません。""")
 
     log_file = Option('logging', 'log_file', 'trac.log',
-        """`log_type` が `file` のときのログファイルへのパスを設定します。""")
+        u"""`log_type` が `file` のときのログファイルへのパスを設定します。""")
 
     log_level = Option('logging', 'log_level', 'DEBUG',
-        """ログレベルを設定します。
+        u"""ログレベルを設定します。
         
         値は (`CRITICAL`, `ERROR`, `WARN`, `INFO`, `DEBUG`) の、どれかでなければなりません。""")
 
     log_format = Option('logging', 'log_format', None,
-        """ログのフォーマットをカスタマイズします。
+        u"""ログのフォーマットをカスタマイズします。
 
         デフォルトでは以下のフォーマットが使用されます :
         
Index: mimeview/api.py
===================================================================
--- mimeview/api.py
+++ mimeview/api.py
@@ -576,17 +576,17 @@
     converters = ExtensionPoint(IContentConverter)
 
     default_charset = Option('trac', 'default_charset', 'cp932',
-        """文字コードが設定されていないときのデフォルト値を設定します。""")
+        u"""文字コードが設定されていないときのデフォルト値を設定します。""")
 
     tab_width = IntOption('mimeviewer', 'tab_width', 8,
-        """ファイルをプレビューするときのタブの表示幅を設定します (''0.9 以降'')。""")
+        u"""ファイルをプレビューするときのタブの表示幅を設定します (''0.9 以降'')。""")
 
     max_preview_size = IntOption('mimeviewer', 'max_preview_size', 262144,
-        """HTML プレビューでのファイルの最大サイズを設定します (''0.9 以降'')。""")
+        u"""HTML プレビューでのファイルの最大サイズを設定します (''0.9 以降'')。""")
 
     mime_map = ListOption('mimeviewer', 'mime_map',
         'text/x-dylan:dylan,text/x-idl:ice,text/x-ada:ads:adb',
-        doc="""追加の MIME タイプとキーワードのマッピングのリストを設定します。
+        doc=u"""追加の MIME タイプとキーワードのマッピングのリストを設定します。
         マッピングリストはそれぞれの MIME タイプごとにカンマ区切りで指定します。
         MIME タイプと関連するキーワードもしくはファイルの拡張子をコロン (":")
         区切りで記述します (''0.10 以降'')。""")
Index: mimeview/enscript.py
===================================================================
--- mimeview/enscript.py
+++ mimeview/enscript.py
@@ -103,11 +103,11 @@
     returns_source = True
 
     path = Option('mimeviewer', 'enscript_path', 'enscript',
-        """Enscript プログラムへのパスを設定します。""")
+        u"""Enscript プログラムへのパスを設定します。""")
 
     enscript_modes = ListOption('mimeviewer', 'enscript_modes',
         'text/x-dylan:dylan:4', doc=
-        """Enscript が処理できる MIME タイプを追加します。
+        u"""Enscript が処理できる MIME タイプを追加します。
         それぞれのエントリは `mimetype:mode:quality` というタプルで
         設定しなければなりません。 `mimetype` には MIME タイプを、
         `mode` には変換に使用する Enscript のモードを、
Index: mimeview/php.py
===================================================================
--- mimeview/php.py
+++ mimeview/php.py
@@ -67,7 +67,7 @@
     implements(IHTMLPreviewRenderer)
 
     path = Option('mimeviewer', 'php_path', 'php',
-        """PHP コマンドへのパスを設定します (''0.9 以降'') 。""")
+        u"""PHP コマンドへのパスを設定します (''0.9 以降'') 。""")
 
     returns_source = True
 
Index: mimeview/pygments.py
===================================================================
--- mimeview/pygments.py
+++ mimeview/pygments.py
@@ -48,11 +48,11 @@
     implements(IHTMLPreviewRenderer, IPreferencePanelProvider, IRequestHandler)
 
     default_style = Option('mimeviewer', 'pygments_default_style', 'trac',
-        """Pygments でのシンタックスハイライトでデフォルトで使われるスタイルを設定します。""")
+        u"""Pygments でのシンタックスハイライトでデフォルトで使われるスタイルを設定します。""")
 
     pygments_modes = ListOption('mimeviewer', 'pygments_modes',
         '', doc=
-        """Pygments が処理できるMIME タイプを追加します。
+        u"""Pygments が処理できるMIME タイプを追加します。
         
         それぞれのエントリは `mimetype:mode:quality` というタプルで
         設定しなければなりません。 `mimetype` には MIME タイプを、
Index: mimeview/silvercity.py
===================================================================
--- mimeview/silvercity.py
+++ mimeview/silvercity.py
@@ -79,7 +79,7 @@
 
     silvercity_modes = ListOption('mimeviewer', 'silvercity_modes',
         '', doc=
-        """SilverCity が処理できるMIME タイプを追加します。
+        u"""SilverCity が処理できるMIME タイプを追加します。
         それぞれのエントリは `mimetype:mode:quality` というタプルで
         設定しなければなりません。 `mimetype` には MIME タイプを、
         `mode` には変換に使用する Pygments のモードを、
Index: perm.py
===================================================================
--- perm.py
+++ perm.py
@@ -295,14 +295,14 @@
 
     store = ExtensionOption('trac', 'permission_store', IPermissionStore,
                             'DefaultPermissionStore',
-        """`IPermissionStore` を実装しているコンポーネント名を設定します。
+        u"""`IPermissionStore` を実装しているコンポーネント名を設定します。
         ユーザとグループのパーミッションの管理のために使用されます。""")
 
     policies = OrderedExtensionsOption('trac', 'permission_policies',
         IPermissionPolicy,
         'DefaultPermissionPolicy, LegacyAttachmentPolicy',
         False,
-        """`IPermissionPolicy` を実装するコンポーネントのリストを設定します。設定されている
+        u"""`IPermissionPolicy` を実装するコンポーネントのリストを設定します。設定されている
         順に適用されます。これらのコンポーネントは、 Trac リソースへの細かい
         アクセスコントロールを行います。
         デフォルトは `DefaultPermissionPolicy` (0.11 より前のふるまい) と
Index: web/chrome.py
===================================================================
--- web/chrome.py
+++ web/chrome.py
@@ -238,7 +238,7 @@
     stream_filters = ExtensionPoint(ITemplateStreamFilter)
 
     shared_templates_dir = PathOption('inherit', 'templates_dir', '',
-        """共有するテンプレートディレクトリのパスを指定します。
+        u"""共有するテンプレートディレクトリのパスを指定します。
         
         指定したパスは環境の `templates` ディレクトリに加えてロードされますが、 
         `templates` ディレクトリが優先となります。 
@@ -246,40 +246,40 @@
         (''0.11 以降'')""")
 
     auto_reload = Option('trac', 'auto_reload', False,
-        """変更があった後、テンプレートファイルを自動的に再読込するかを設定します。""")
+        u"""変更があった後、テンプレートファイルを自動的に再読込するかを設定します。""")
 
     htdocs_location = Option('trac', 'htdocs_location', '',
-        """静的なリソースへアクセスするためのベース URL を指定します。""")
+        u"""静的なリソースへアクセスするためのベース URL を指定します。""")
 
     metanav_order = ListOption('trac', 'metanav',
                                'login,logout,prefs,help,about', doc=
-        """ナビゲーションバーの `metanav` に表示する項目の順序を
+        u"""ナビゲーションバーの `metanav` に表示する項目の順序を
            ID のリストで設定します。詳しくは TracNavigation を参照してください。""")
 
     mainnav_order = ListOption('trac', 'mainnav',
                                'wiki,timeline,roadmap,browser,tickets,'
                                'newticket,search', doc=
-        """ナビゲーションバーの `mainnav` に表示する項目の順序を
+        u"""ナビゲーションバーの `mainnav` に表示する項目の順序を
            ID のリストで設定します。詳しくは TracNavigation を参照してください。""")
 
     logo_link = Option('header_logo', 'link', '',
-        """ヘッダロゴがリンクする URL を設定します。""")
+        u"""ヘッダロゴがリンクする URL を設定します。""")
 
     logo_src = Option('header_logo', 'src', 'site/your_project_logo.png',
-        """ヘッダロゴに使用するイメージファイルの URL を設定します。""")
+        u"""ヘッダロゴに使用するイメージファイルの URL を設定します。""")
 
     logo_alt = Option('header_logo', 'alt', 
-        "(trac.ini の [header_logo] セクションを設定してください)",
-        """ヘッダロゴに使用する alt テキストを設定します。""")
+        u"(trac.ini の [header_logo] セクションを設定してください)",
+        u"""ヘッダロゴに使用する alt テキストを設定します。""")
 
     logo_width = IntOption('header_logo', 'width', -1,
-        """ヘッダロゴの幅を pixel で設定します。""")
+        u"""ヘッダロゴの幅を pixel で設定します。""")
 
     logo_height = IntOption('header_logo', 'height', -1,
-        """ヘッダロゴの高さを pixel で設定します。""")
+        u"""ヘッダロゴの高さを pixel で設定します。""")
 
     show_email_addresses = BoolOption('trac', 'show_email_addresses', 'false',
-        """ユーザ名の代わりにメールアドレスを表示します。 false の場合、
+        u"""ユーザ名の代わりにメールアドレスを表示します。 false の場合、
         メールアドレスはわかりづらくなります (''0.11 以降'')。""")
 
     templates = None