[[PageOutline]]
= TracJa について =
'''このファイルはオリジナル Trac の配布物には含まれません。'''

Trac-Ja は Trac の日本語ローカライズバージョンです。

----
== Trac の I18N 対応状況 ==
Trac はオリジナル配布のままでも、日本語を使用することができます。

Trac の内部では ([http://trac.edgewall.org/milestone/0.10 0.10] 以降) Python の
'Unicode binary' 形式で文字列を処理し、 Web の表示は `UTF-8`で行われるため、
(対応するフォントがあれば) どのような言語であっても取り扱うことができます。
(See: TracUnicode)


=== [wiki:TracEnvironment Environment] ===
[http://trac.edgewall.org/wiki/DatabaseBackend バックエンドのデータベース] には
`UTF-8` でデータ (Wiki ページ, チケット) が保存されます。

添付ファイルはデータベースに格納されません。 Environment の `attachments`
ディレクトリ配下に、 URL エンコードされたファイル名で保存されます。
[[BR]]→ ブラウザが URL エンコードに `UTF-8` を使用していない場合、ファイル名が
文字化けするかもしれません。

[wiki:TracIni trac.ini ファイル] 他、Environment に配置するファイル
(サイトヘッダや [wiki:WikiMacros Wiki マクロ] など) は、 `UTF-8`
で作成してください。 (`BOM (Byte Order Mark)` は付けない方が安全です)


=== [wiki:TracBrowser リポジトリブラウザ] ===
今のところ Trac が正式に対応している
[http://trac.edgewall.org/wiki/VersioningSystemBackend バックエンドのバージョン管理システム]
は、 Subversion だけです。 ([http://trac-hacks.org Trac Hacks] などには、
他のバージョン管理システムを使うためのプラグインがありますが、
動作状況等未確認です。)

バージョン管理下のファイルは、 MIME Viewer という機能で HTML 変換し、
リポジトリブラウザに表示されます:
 1. `svn:mime-type` 属性もしくはファイルのサフィックスが、画像のように表示可能な
    バイナリファイル形式の場合は、 `<img>` 要素として表示されます。
 2. 表示できないバイナリファイル (`application/octet-stream` 等) の場合は、
    ダウンロードへのリンクが表示されます。
 3. バイナリファイルと判別されない場合、全てテキストファイルとして Web
    ページに表示されます。
   1. ファイルに設定された `svn:mime-type` 属性が `text/html; charset=utf-8`
      のように `charset=` を含む場合は、その文字コードでファイルを読み込みます。
   2. ファイルに `BOM (Byte Order Mark)` が付いていれば、適切な `UTF`
      でファイルを読み込みます。
   3. ファイル個別に判定できない場合は、 [wiki:TracIni trac.ini ファイル] の
      `[trac]` セクション `default_charset` オプションに指定された文字コードで
      ファイルを読み込みます。
      このコンフィグの初期値は `iso-8859-15` なので、日本語で Trac
      を使用する場合は、まず最初に変更する設定になると思います。

Python 2.3 配布には、日本語だけで使用されている文字コード(`shift_jis`, `euc-jp`
など) の codec が含まれていません。これらの文字コードを使用したい場合は、別途
[http://www.python.jp/Zope/download/JapaneseCodecs JapaneseCodecs]
をインストールする必要があります。
Python 2.4 配布では、 !JapaneseCodecs が同梱されています。


=== 添付ファイル ===
添付ファイル表示もバージョン管理下のファイルと同じく、 MIME Viewer が行います。

ただし添付ファイルでは、 (`svn:mime-type` 属性のような) ファイル毎の文字コード
指定はできないので、 `BOM` による `UTF` の判別ができなければ、 `default_charset`
に指定した codec に固定されます。


=== [wiki:TracAdmin コンソール] ===
[wiki:TracAdmin trac-admin コマンド] の入出力では、使用するコンソールの
文字コードが自動判別されます。
([http://trac.edgewall.org/milestone/0.10 0.10] 以降)


=== [wiki:TracNotification メール通知] ===
Trac が送信するメールは `UTF-8` が `Base64` か `quoted-printable` で 7bit-safe
な形式にエンコードされています。MUA がこれらのエンコードに対応していない場合、
文字化けする可能性があります。 (See: TracNotification)


----
== Trac の L10N 対応状況 ==
オリジナル配布ではユーザ入力以外の表示メッセージは全て英語です。
これを日本語化した手順を記述します。


=== Web 画面のコンテンツ ===
[wiki:TracJa#TracのI18N対応状況 前項] の通りです。
日本語化作業で変更した点はありません。
チケット属性について付記します。


==== チケット属性名 ====
チケット属性の名前は、ほとんどの画面で日本語の属性名が表示されますが、
レポートの検索結果画面は例外です。
レポートの検索結果画面でのチケット属性の列名は、検索に使用した SQL
の列名がそのまま表示されます。
ですが SQL の SELECT 句で `AS` を挿入すれば、列名を日本語化することが出来ます。
ただし `modified` や `description` など、特定の表示フォーマットに使用する列名
(See TracReports) は変更するとフォーマットされません。


==== チケット属性の値 ====
チケット属性の値は、データベースにそのまま保存されます。
データベースには `UTF-8` であれば保存できるので、リストボックス形式の属性は
[wiki:TracAdmin trac-admin コマンド] で日本語に変更可能です。
たとえば分類のデフォルトは `defect`, `task`, `enhancement` ですが `不具合`,
`タスク`, `機能追加` のように日本語に変更することができます。
とは言え、プロジェクト毎に必要となる用語は異なるでしょうから、 Trac-Ja
では翻訳対象としていません。

例外は「ステータス (`Status`)」の値です。
チケットの状態遷移が Python ソースにハードコードされているため、
変更すると多くの箇所にパッチしなければなりませんし、
今後の Trac リリースに対応できなくなるおそれがあります。

  [http://trac.edgewall.org/milestone/0.11 0.11] か
  [http://trac.edgewall.org/milestone/0.12 0.12] で、導入される予定の
  [http://trac.edgewall.org/wiki/WorkFlow Flexible/Extensible Ticket Workflow]
  では、日本語化できるようになる可能性があります。


=== Web 画面のテンプレート ===
プレゼンテーション層の処理は、 `templates` ディレクトリ配下の !ClearSilver
テンプレートに集約されているのですが、実際に表示される用語などが `trac`
ディレクトリ配下の Python コード内にハードコードされているため、現時点では、
ソースに直接パッチを行わないと翻訳できません。

また [http://trac.edgewall.org/milestone/0.10 0.10] 以降、 Trac
が内部処理に使用する文字コードが `UTF-8` から `Unicode binary` に変更されました。
この変更によって、文字列の折り返しや切り落としが、
多バイト文字の途中で行われないようになりましたが、
Python コード内で非 `ASCII` を使用する場合、 `u'日本語文字列'` のように
`Unicode binary` 文字列を使わないと動かない箇所があります。
この制限は [wiki:WikiMacros Wiki マクロ] や [wiki:TracPlugins プラグイン]
でも適用されますので、マクロやプラグインを作成したり、
翻訳したりする場合には留意してください。

  [http://trac.edgewall.org/milestone/0.11 0.11] では、テンプレートエンジンが
  !ClearSilver から [http://genshi.edgewall.org/ Genshi] に乗せ換えられ、
  表示メッセージは完全に Python コード内に移動します。その上で、
  各言語でのメッセージが `gettext` 方式で切り替えられる構造に変更される予定です。
  ですので、今後の地域化は今までと全く違う形になりそうです。


=== Wiki ページ ===
Wiki ページとして同梱されているオンラインマニュアルは、 `wiki-default`
ディレクトリにあるファイルを翻訳すれば地域化することが出来ます。

  [http://trac.edgewall.org/milestone/0.11 0.11] での多言語化対応も、
  今のところ Wiki のマニュアルまでは及んでいません。
  Wiki の地域化は、まだまだ白紙というのが現状です。

Trac-Ja から Wiki ページだけを使いたい場合:
 1. `trac-0.xx.x-ja-x.zip` を展開し
 2. `wiki-default/check_wiki.py` を削除した上で
 3. [wiki:TracAdmin trac-admin コマンド] で、 `wiki import` してください。


----
== Trac のバグ ==
trac-0.10.4 のオリジナル配布に存在するバグについて記載しておきます。


=== Trac-Ja で修正しているバグ ===
日本語環境で Trac を使用するために必要な、最小限のパッチを行っています。

 * `LC_TIME` にマルチバイト文字が含まれるロケールを使用すると、
   タイムラインやマイルストーンでの日付入力がエラーになる。
   (See: [http://trac.edgewall.org/ticket/2182 #2182])[[BR]]
   [http://trac.edgewall.org/milestone/0.11 0.11]
   ではタイムゾーンのハンドリングを含めた対応が予定されていますが、
   現時点では開発バージョンも含めて対応されていません。
   [[BR]]日付が入力できないと実用上の問題が大きいので、デフォルトの日付書式を
   `%x %X` から `%Y/%m/%d %H:%M:%S` に変更しています。
 * [wiki:WikiMacros Wiki マクロ] のヘルプが `ascii`, `Unicode binary`
   以外のエンコードの場合に `[[MacroList]]` で表示されない。[[BR]]
   マクロヘルプは基本的に class コメントから取得します。この class コメントを
   `Unicode binary` にすることで work arround になるのですが、
   [wiki:WikiMacros Wiki マクロ] は 3rd-party からも提供されているので、
   全てに適用するのは面倒です。マクロヘルプを表示する際に `utf-8` か
   `preferred encoding` から `Unicode bianry` に変換するように変更しています。


=== 修正していないバグ ===
これらのバグは、今後のオリジナルのリリースや、 Trac-Ja
のリリースで解消されるかもしれませんが、現状では修正されていません。

 * `priority` を全て削除すると、ロードマップでの iCalendar
   出力にスタックトレースが含まれ、不正フォーマットになる。
 * 複数のバージョンを持つ Wiki ページで ''このバージョンを削除''
   ボタンをクリックすると、削除の警告メッセージに
   「このページには1つのバージョンしかありませんのでページを完全に削除します!」
   と出力されるが実際に削除されるのは、 ''このバージョン'' のみである。
   (See: [http://trac.edgewall.org/ticket/3928 #3928])
 * `type` を全て削除すると、タイムラインでの RSS
   出力にスタックトレースが含まれ、不正フォーマットになる。
 * コンポーネント名やマイルストーン名称に半角空白文字を 2 つ以上続けて書くと
   チケットの登録時にエラーとなる。
   (See: [http://trac.edgewall.org/ticket/4142 #4142])


----
== セキュリティ上の注意点 ==
Trac を使用する上でのセキュリティ上の注意点です。


=== [wiki:WikiMacros Wiki マクロ] の導入 ===
[wiki:WikiMacros Wiki マクロ] では、受け取った引数を表示に含める場合、
`trac.util.escape()` を使用してサニタイズを行わないと脆弱性の原因になります。

サニタイズの実施は各マクロで行う必要があります。
Trac および Trac-Ja の配布に含まれるマクロではサニタイズが行われていますが、
マクロを自作する場合や、
[http://trac-hacks.org/ Trac Hacks] 等からマクロを導入する際には、
各自で確認してから使用するようにしてください。


=== コメント Spam 対策 ===
最近 Trac を標的にしたコメント Spam が発生しています。

Public に公開する Trac では [wiki:TracPermissions パーミッション]
を適切に設定したり、 [http://trac.edgewall.org/wiki/SpamFilter 本家 Wiki]
を参考に [http://trac.edgewall.org/browser/sandbox/spam-filter SpamFilter]
を導入するなど、対策を怠らないようにしてください。


----
See also: TracTermsJa -- 対訳用語集
