Trac-ja について
このファイルは Trac のオリジナル配布物には含まれません。
Trac-ja は Trac の日本語ローカライズバージョンです。
Trac の I18N 対応状況
Trac はオリジナル配布物のままでも、日本語を使用することができます。
Trac の内部では (0.10 以降) Python の'Unicode' 形式で文字列を処理し、 Web の表示は UTF-8
で行われるため、 (対応するフォントがあれば) どのような言語であっても取り扱うことができます。 (See: TracUnicode)
Environment
バックエンドのデータベース には UTF-8
でデータ (Wiki ページ, チケット) が保存されます。
添付ファイルはデータベースに格納されません。 Environment の attachments
ディレクトリ配下に、 URL エンコードされたファイル名で保存されます。ブラウザが URL エンコードに UTF-8
を使用していない場合、ファイル名が文字化けすることがあります。また、ファイル名に日本語を使用すると 1 文字あたり 9 バイトに展開されるので、日本語 20 文字程度でファイルシステムが許容するファイル名の長さの上限に達してしまうので注意してください。
trac.ini ファイル 他、Environment に配置するファイル (カスタムテンプレート や、 Wiki マクロ など) は、 UTF-8
で作成してください。 BOM (Byte Order Mark)
が付いていると動かないことがあります。 Windows のメモ帳 (NOTEPAD.EXE
) で編集しないようにしてください)
リポジトリブラウザ
今のところ Trac が正式に対応している バックエンドのバージョン管理システム は、 Subversion だけです。 Trac Project の開発ブランチ や Trac Hacks などには、他のバージョン管理システムを使うためのプラグインがありますが、動作状況等未確認です。
バージョン管理下のファイルは、 MIME Viewer という機能で HTML 変換し、リポジトリブラウザに表示されます:
- trac.ini ファイル で
render_unsafe_content
がfalse
(デフォルト値) に設定されていれば、安全なファイルだけが Web ページとして表示され、それ以外のファイルはダウンロードへのリンクが表示されます。true
に設定されていれば、表示可能な全てのファイルが Web ページとして表示されます。 svn:mime-type
属性もしくはファイルのサフィックスが、画像のように表示可能なバイナリファイル形式の場合は、<img>
要素として表示されます。- 表示できないバイナリファイル (
application/octet-stream
等) の場合は、ダウンロードへのリンクが表示されます。 - バイナリファイルと判別されない場合、テキストを HTML に整形します。
- ファイルに設定された
svn:mime-type
属性がtext/html; charset=utf-8
のようにcharset=
を含む場合は、その文字コードでファイルを読み込みます。 - ファイルに
BOM (Byte Order Mark)
が付いていれば、適切なUTF
でファイルを読み込みます。 - ファイル個別に判定できない場合は、 trac.ini ファイル の
[trac]
セクションdefault_charset
オプションに指定された文字コードでファイルを読み込みます。このコンフィグの初期値は、cp932
(日本語版 Windows で通常使われている文字コード。オリジナル配布物ではiso-8859-15
である箇所にパッチしています) なので、UTF-8
やEUC-JP
などの文字コードを使用する場合は、同コンフィグを変更してください。
- ファイルに設定された
Python 2.3 配布には、日本語だけで使用されている文字コード(cp932
, shift_jis
, euc-jp
など) の codec が含まれていません。これらの文字コードを使用したい場合は、別途 JapaneseCodecs をインストールする必要があります。 Python 2.4 配布では、 JapaneseCodecs が同梱されています。
Vista 文字を含む Shift_JIS のファイルは cp932
では変換に失敗することがあります。この場合 default_charset
等には shift_jis_2004
を使用すると改善する可能性が高いです。OS や Python のバージョン、ビルド時のオプションに依存する箇所なので、 100% ということはありません。
添付ファイル
添付ファイル表示もバージョン管理下のファイルと同じく、 MIME Viewer が行います。
ただし添付ファイルでは、 (svn:mime-type
属性のような) ファイル毎の文字コード指定はできないので、 BOM
による UTF
の判別ができなければ、 default_charset
に指定した文字コードに固定されます。
コンソール
trac-admin コマンド の入出力では、使用するコンソールの文字コードが自動判別されます。 (0.10 以降)
メール通知
Trac が送信するメールは UTF-8
が Base64
か quoted-printable
で 7bit-safe な形式にエンコードされています。MUA がこれらのエンコードに対応していない場合、文字化けする可能性があります。 (See: TracNotification)
Trac の L10N 対応状況
オリジナル配布ではユーザ入力以外の表示メッセージは全て英語です。これを日本語化した手順を記述します。
コンテンツ
入力内容はオリジナル配布物でも日本語を使用できます。 前項 の通りです。日本語化作業で変更した点はありません。
チケット属性について付記します。
チケット属性名
チケット属性の名前は、ほとんどの画面で何もしなくても日本語の属性名が表示されるようになっています。例外は TracReports の検索結果画面です。レポートの検索結果画面でのチケット属性の列名は、検索に使用した SQL の列名がそのまま表示されます。ですので SQL の SELECT 句で AS
を挿入すれば、列名を日本語化することが出来ます。 0.11 以降、デフォルトのレポートのカラム名は日本語に変更しました。アップグレードした Environment で日本語のレポートを使用したい場合は、 TracReports を参考に変更してください。
チケット属性の値
チケット属性の値は、データベースにそのまま保存されます。データベースには UTF-8
であれば保存できるので、リストボックス形式の属性は trac-admin コマンド で日本語に変更可能です。たとえば分類のデフォルトは defect
, task
, enhancement
ですが 不具合
, タスク
, 機能追加
のように日本語に変更することができます。とは言え、プロジェクト毎に必要となる用語は異なるでしょうから、 Trac-ja では翻訳対象としていません。
0.11 から TracWorkflow が導入され、チケットのステータス (Status
) も日本語化できるようになりましたが、同じ理由で Trac-ja では翻訳対象としていません。また new
と closed
のステータスは依然ハードコードされており、日本語化すると動作に不具合が起きます。ワークフローを変更するときは、チケットの初期ステータスは new
に、終了ステータスは closed
にするようにしてください。
アップグレードした Environment でワークフローを変更する場合、 trac.ini
ファイルを変更しても、すでに存在するチケットのステータスは書き変わらないことにも注意してください。
テンプレート
0.11 からテンプレートエンジンが ClearSilver から Genshi に変更され、一部のテキストについては gettext
での多地域化を前提に実装されるようになりました。しかし、カタログ抽出や表示言語セレクタとなるコンポーネントである Babel の組み込みは、次のメジャーリリースである 0.12 に持ち越されており、ローカライズ対応は開発途中の状態です。
このような背景もあり、以下の要領で翻訳を行いました:
- Babel は開発中であるため、依存関係を構築しない。
- Babel を使用しないと Pyhton コード以外の箇所からカタログ抽出できないため、
gettext
も使用しない。単純なディクショナリを使用する。 gettext-marker
が付いていないメッセージのうち、単純ものはgettext-marker
を付与して dictionary で日本語化する。- HTML タグがネストしていたり、同じ単語でも使用している意味が違っていたり、分割メッセージを組み立てて表示している複雑なメッセージは翻訳を直接パッチする。
trac/util/translation.py
のディクショナリを変更すれば、表示メッセージを変更することができます。
Wiki ページ
Wiki ページとして同梱されているオンラインマニュアルは、 trac/wiki/default-pages
ディレクトリにあるファイルを翻訳すれば地域化することが出来ます。
0.11 から Wiki ページ単体でもオリジナル配布物に使用できるように、翻訳方法を変更しました。 Trac-ja から Wiki ページだけを使いたい場合、 trac-0.xx.x-ja-x.zip
を展開し trac-admin コマンド で、 wiki import
してください。
また、 0.12 では 新しいヘルプシステム が予定されています。
Trac のバグ
Trac-0.11 のオリジナル配布に存在するバグについて記載しておきます。
Trac-ja で修正しているバグ
日本語環境で Trac を使用するために必要な、最小限のパッチを行っています。
LC_TIME
にマルチバイト文字が含まれるロケールを使用すると、タイムラインやマイルストーンでの日付入力がエラーになる。 (See: #2182)
地域化ライブラリ Babel での解決が 0.12 で予定されていますが、現時点では開発バージョンも含めて対応されていません。
日付が入力できないと実用上の問題が大きいので、デフォルトの日付書式を%x %X
から%Y/%m/%d %H:%M:%S
に変更しています。Option のドキュメントに非 ASCII 文字が含まれているとTrac-0.11.3 で変更が本家に取り込まれました。 この対応によってUnicodeDecodeError
が発生する。 Trac-0.11.1.ja2 までのリリースでは Option のドキュメント文字列そのものを unicode 化して対応していましたが、 pydoc などの出力で異常が発生するなどの副作用があったため、本体へのパッチに切り替えました。IniAdminPlugin
,xmlrpcplugin
などにも影響が出ます。 (See: trachacks:#4179)- リポジトリブラウザからの Zip 形式ダウンロードを行うと、アーカイブに含まれるファイルのタイムスタンプが UTC 時間になる。
修正していないバグ
これらのバグは、今後のオリジナル配布物のリリースや、 Trac-ja のリリースで解消されるかもしれませんが、現状では修正されていません。
- InterTrac で
diff:
リンクを使用すると、リモートサイトでエラーになる。 - カスタムクエリで表示項目に説明 (
description
) や、複数行テキスト (textarea
) のカスタムフィールドを含めても、 CSV や TSV の出力には含まれない。 例外クラスをログの出力に含めると、 unicode 変換のエラーが発生する。
→ Trac-0.11.3 で対応されました。例外クラスを unicode 文字列に変換する専用ユーティリティtrac.util.text.exception_to_unicode
が追加されていますので、プラグイン等で例外をログ出力する場合は、これを使用するようにして下さい。
セキュリティ上の注意点
Trac を使用する上でのセキュリティ上の注意点です。
Wiki マクロ の導入
Wiki マクロ では、受け取った引数を表示に含める場合、サニタイズを行わないと脆弱性の原因になります。
サニタイズの実施は各マクロで行う必要があります。 Trac および Trac-ja の配布に含まれるマクロではサニタイズが行われていますが、マクロを自作する場合や、 Trac Hacks 等からマクロを導入する際には、各自で確認してから使用するようにしてください。
コメント Spam 対策
Trac を標的にしたコメント Spam が発生しています。
Public に公開する Trac では パーミッション を適切に設定したり、 Trac Project の Wiki ページ を参考に SpamFilter を導入するなど、対策を怠らないようにしてください。
See also: TracInstall, TracUpgrade