読者です 読者をやめる 読者になる 読者になる

Natural Software

KinectなどのDepthセンサーを中心に活動しています

Trac のチケット操作通知メールを日本語化

Trac

前回書いた Trac のチケット操作通知メールではメールの各項目が英語で表示されている。
これを日本語にすると見やすくなるのかなぁと言うことで探していたらみつけたのがこのサイト。
メール通知日本語化計画@Talking Nonstop

ゴール

メール通知を日本語化するとこのようになる

  • 事前
------------------------+---------------------------------------------------
 Reporter:  admin       |        Owner:  somebody  
     Type:  タスク      |       Status:  new       
 Priority:  高          |    Milestone:  1.0αリリース  
Component:  その他      |      Version:  1.0β      
 Keywords:              |   Due_assign:  2008/08/07
Due_close:  2008/08/08  |     Complete:            
------------------------+---------------------------------------------------
 チケットについての説明
  • 事後
#4: テスト2
------------------------+---------------------------------------------------
報告者 : admin
担当者 : somebody
分類 : タスク
ステータス : new
優先度 : 緊急
マイルストーン : 1.0βリリース
コンポーネント : ユーザ管理機能
バージョン : 1.0α
キーワード : 
着手予定日 : 2008/08/08
終了予定日 : 2008/08/09
進捗率(%) : 
------------------------+---------------------------------------------------
 チケットの説明2

手順

詳細な手順についてはここを参照
注意点として、変更するファイルは「C:\TracLight\python\Lib\site-packages\trac\ticket*1」にある notification.py。
#notification.py は複数存在するため
このファイルを以下のように変更する(参考サイトより引用)

--- TracLight/python/Lib/site-packages/trac/ticket/notification.py (リビジョン 49)
+++ TracLight/python/Lib/site-packages/trac/ticket/notification.py (リビジョン 51)
@@ -152,16 +152,14 @@
         i = 0
         for f in [f for f in fields if f['name'] != 'description']:
             fname = f['name']
+            flabel = f['label']
             if not tkt.values.has_key(fname):
                 continue
             fval = tkt[fname]
             if f['type'] == 'textarea' or '\n' in unicode(fval):
-                big.append((fname.capitalize(), CRLF.join(fval.splitlines())))
+                big.append((flabel.capitalize(), CRLF.join(fval.splitlines())))
             else:
-                txt += format[i % 2] % (fname.capitalize(), fval)
-                i += 1
-        if i % 2:
-            txt += CRLF
+                txt += '%s : %s%s' % (flabel.capitalize(), fval, CRLF)
         if big:
             txt += sep
             for name, value in big:

*1:Trac 0.11.ja1 :C:\TracLight\python\Lib\site-packages\Trac-0.11.ja1-py2.5.egg\trac\ticket 、Trac 0.11.1.ja1:C:\TracLight\python\Lib\site-packages\Trac-0.11.1.ja1-py2.5.egg\trac\ticket