TracJa について
このファイルはオリジナル Trac の配布物には含まれません。
Trac-Ja は Trac の日本語ローカライズバージョンです。
Trac の I18N 対応状況
Trac はオリジナル配布のままでも、日本語を使用することができます。
Trac の内部では (0.10 以降) Python の 'Unicode binary' 形式で文字列を処理し、 Web の表示は UTF-8で行われるため、 (対応するフォントがあれば) どのような言語であっても取り扱うことができます。 (See: TracUnicode)
Environment
バックエンドのデータベース には UTF-8 でデータ (Wiki ページ, チケット) が保存されます。
添付ファイルはデータベースに格納されません。 Environment の attachments
ディレクトリ配下に、 URL エンコードされたファイル名で保存されます。
→ ブラウザが URL エンコードに UTF-8 を使用していない場合、ファイル名が
文字化けするかもしれません。
trac.ini ファイル 他、Environment に配置するファイル (サイトヘッダや Wiki マクロ など) は、 UTF-8 で作成してください。 (BOM (Byte Order Mark) は付けない方が安全です)
リポジトリブラウザ
今のところ Trac が正式に対応している バックエンドのバージョン管理システム は、 Subversion だけです。 (Trac Hacks などには、 他のバージョン管理システムを使うためのプラグインがありますが、 動作状況等未確認です。)
バージョン管理下のファイルは、 MIME Viewer という機能で HTML 変換し、 リポジトリブラウザに表示されます:
- svn:mime-type 属性もしくはファイルのサフィックスが、画像のように表示可能な バイナリファイル形式の場合は、 <img> 要素として表示されます。
- 表示できないバイナリファイル (application/octet-stream 等) の場合は、 ダウンロードへのリンクが表示されます。
- バイナリファイルと判別されない場合、全てテキストファイルとして Web
ページに表示されます。
- ファイルに設定された svn:mime-type 属性が text/html; charset=utf-8 のように charset= を含む場合は、その文字コードでファイルを読み込みます。
- ファイルに BOM (Byte Order Mark) が付いていれば、適切な UTF でファイルを読み込みます。
- ファイル個別に判定できない場合は、 trac.ini ファイル の [trac] セクション default_charset オプションに指定された文字コードで ファイルを読み込みます。 このコンフィグの初期値は iso-8859-15 なので、日本語で Trac を使用する場合は、まず最初に変更する設定になると思います。
Python 2.3 配布には、日本語だけで使用されている文字コード(shift_jis, euc-jp など) の codec が含まれていません。これらの文字コードを使用したい場合は、別途 JapaneseCodecs をインストールする必要があります。 Python 2.4 配布では、 JapaneseCodecs が同梱されています。
添付ファイル
添付ファイル表示もバージョン管理下のファイルと同じく、 MIME Viewer が行います。
ただし添付ファイルでは、 (svn:mime-type 属性のような) ファイル毎の文字コード 指定はできないので、 BOM による UTF の判別ができなければ、 default_charset に指定した codec に固定されます。
コンソール
trac-admin コマンド の入出力では、使用するコンソールの 文字コードが自動判別されます。 (0.10 以降)
メール通知
Trac が送信するメールは UTF-8 が Base64 か quoted-printable で 7bit-safe な形式にエンコードされています。MUA がこれらのエンコードに対応していない場合、 文字化けする可能性があります。 (See: TracNotification)
Trac の L10N 対応状況
オリジナル配布ではユーザ入力以外の表示メッセージは全て英語です。 これを日本語化した手順を記述します。
Web 画面のコンテンツ
前項 の通りです。 日本語化作業で変更した点はありません。 チケット属性について付記します。
チケット属性名
チケット属性の名前は、ほとんどの画面で日本語の属性名が表示されますが、 レポートの検索結果画面は例外です。 レポートの検索結果画面でのチケット属性の列名は、検索に使用した SQL の列名がそのまま表示されます。 ですが SQL の SELECT 句で AS を挿入すれば、列名を日本語化することが出来ます。 ただし modified や description など、特定の表示フォーマットに使用する列名 (See TracReports) は変更するとフォーマットされません。
チケット属性の値
チケット属性の値は、データベースにそのまま保存されます。 データベースには UTF-8 であれば保存できるので、リストボックス形式の属性は trac-admin コマンド で日本語に変更可能です。 たとえば分類のデフォルトは defect, task, enhancement ですが 不具合, タスク, 機能追加 のように日本語に変更することができます。 とは言え、プロジェクト毎に必要となる用語は異なるでしょうから、 Trac-Ja では翻訳対象としていません。
例外は「ステータス (Status)」の値です。 チケットの状態遷移が Python ソースにハードコードされているため、 変更すると多くの箇所にパッチしなければなりませんし、 今後の Trac リリースに対応できなくなるおそれがあります。
0.11 か 0.12 で、導入される予定の Flexible/Extensible Ticket Workflow では、日本語化できるようになる可能性があります。
Web 画面のテンプレート
プレゼンテーション層の処理は、 templates ディレクトリ配下の ClearSilver テンプレートに集約されているのですが、実際に表示される用語などが trac ディレクトリ配下の Python コード内にハードコードされているため、現時点では、 ソースに直接パッチを行わないと翻訳できません。
また 0.10 以降、 Trac が内部処理に使用する文字コードが UTF-8 から Unicode binary に変更されました。 この変更によって、文字列の折り返しや切り落としが、 多バイト文字の途中で行われないようになりましたが、 Python コード内で非 ASCII を使用する場合、 u'日本語文字列' のように Unicode binary 文字列を使わないと動かない箇所があります。 この制限は Wiki マクロ や プラグイン でも適用されますので、マクロやプラグインを作成したり、 翻訳したりする場合には留意してください。
0.11 では、テンプレートエンジンが ClearSilver から Genshi に乗せ換えられ、 表示メッセージは完全に Python コード内に移動します。その上で、 各言語でのメッセージが gettext 方式で切り替えられる構造に変更される予定です。 ですので、今後の地域化は今までと全く違う形になりそうです。
Wiki ページ
Wiki ページとして同梱されているオンラインマニュアルは、 wiki-default ディレクトリにあるファイルを翻訳すれば地域化することが出来ます。
0.11 での多言語化対応も、 今のところ Wiki のマニュアルまでは及んでいません。 Wiki の地域化は、まだまだ白紙というのが現状です。
Trac-Ja から Wiki ページだけを使いたい場合:
- trac-0.xx.x-ja-x.zip を展開し
- wiki-default/check_wiki.py を削除した上で
- trac-admin コマンド で、 wiki import してください。
Trac のバグ
trac-0.10 のオリジナル配布に存在するバグについて記載しておきます。
Trac-Ja で修正しているバグ
日本語環境で Trac を使用するために必要な、最小限のパッチを行っています。
- LC_TIME にマルチバイト文字が含まれるロケールを使用すると、
タイムラインやマイルストーンでの日付入力がエラーになる。
(See: #2182)
trac-0.11 ではタイムゾーンのハンドリングを含めた対応が予定されていますが、 どのような形になるかは未定です。 (See: datetime 開発ブランチ, datetime-genshi 開発ブランチ)
日付が入力できないと実用上の問題が大きいので、デフォルトの日付書式を %x %X から %Y/%m/%d %H:%M:%S に変更しています。 - Wiki マクロ のヘルプが ascii, Unicodebinary
以外のエンコードの場合に [[MacroList]] で表示されない。
マクロヘルプは基本的に class コメントから取得します。この class コメントを Unicode binary にすることで work arround になるのですが、 Wiki マクロ は 3rd-party からも提供されているので、 全てに適用するのは面倒です。マクロヘルプを表示する際に utf-8 か preferred encoding から Unicode bianry に変換するように変更しています。 - trac-0.10.1, trac-0.10.2 では、 Subversion リポジトリの
内容表示に失敗することがあります。 (特に ModPython 使用時)
(See: #4132)
Security Fix 直後であり trac-0.10 に戻すという運用対処が難しいことと、 trac-0.10.1, trac-0.10.2 の安定性が低いことから、 trac-0.10 に CSRF 脆弱性に対応する本家チェンジセット r4145, r4147, r4153, r4154, r4155, r4171, r4244, r4257 をマージしています。
修正していないバグ
これらのバグは、今後のオリジナルのリリースや、 Trac-Ja のリリースで解消されるかもしれませんが、現状では修正されていません。
- priority を全て削除すると、ロードマップでの iCalendar 出力にスタックトレースが含まれ、不正フォーマットになる。
- 変数を使用するレポートで、例外が発生することがある。
(See: #2773,
TracUpgrade)
[2941] で一旦解消されましたが、 [3300] で上書かれています。 trac-0.10.1 以降では解消されるかもしれません。 - 複数のバージョンを持つ Wiki ページで このバージョンを削除 ボタンをクリックすると、削除の警告メッセージに 「このページには1つのバージョンしかありませんのでページを完全に削除します!」 と出力されるが実際に削除されるのは、 このバージョン のみである。 (See: #3928)
- チケットのメール通知を有効にしている場合で、 trac.ini ファイル
の [notification] セクション always_notify_updater オプションを false
に設定している場合は、チケット登録時の通知メールが送信されない。
(See: #3654)
([3808] で trac-0.10 保守ブランチ に取り込まれたので、 trac-0.10.1 で解消する見込みです。)
セキュリティ上の注意点
Trac を使用する上でのセキュリティ上の注意点です。
Wiki マクロ の導入
Wiki マクロ では、受け取った引数を表示に含める場合、 trac.util.escape() を使用してサニタイズを行わないと脆弱性の原因になります。
サニタイズの実施は各マクロで行う必要があります。 Trac および Trac-Ja の配布に含まれるマクロではサニタイズが行われていますが、 マクロを自作する場合や、 Trac Hacks 等からマクロを導入する際には、 各自で確認してから使用するようにしてください。
コメント Spam 対策
最近 Trac を標的にしたコメント Spam が発生しています。
Public に公開する Trac では パーミッション を適切に設定したり、 本家 Wiki を参考に SpamFilter を導入するなど、対策を怠らないようにしてください。
See also: TracTermsJa -- 対訳用語集