| 8 | | Trac は Python で記述されているため、内部コードは Unicode です。 |
| 9 | | また、 Wiki ページやレポート、チケットなどはデータベースに格納する時点で |
| 10 | | UTF-8 に変換されるため、これらは基本的にオリジナル配布のままでも日本語が使用できます。 |
| 11 | | |
| 12 | | 添付ファイルやリポジトリブラウザの表示が文字化けする場合、適切な文字コードを |
| 13 | | TracIni ファイルのパラメータ `[trac]` `default_charset` に設定してください: |
| 14 | | {{{ |
| 15 | | [trac] |
| 16 | | default_charset = Shift_JIS |
| 17 | | }}} |
| 18 | | 大抵の場合、この設定だけで文字化けは解消します。 |
| 19 | | |
| 20 | | Subversion リポジトリに格納しているファイルのエンコードが、ファイルごとに違う場合、 |
| 21 | | Subversion 側で各ファイルの `svn:mime-types` 属性に `charset` を |
| 22 | | 正しく設定することで解消します (trac-0.8.2 以降): |
| 23 | | {{{ |
| 24 | | PROMPT$ svn propset 'svn:mime-type' 'text/x-csrc; charset=Shift_JIS' *.c |
| 25 | | }}} |
| 26 | | |
| 27 | | 添付ファイルの文字コードは TracIni の `default_charset` に固定されます。 |
| 28 | | |
| 29 | | |
| | 9 | Trac はオリジナル配布のままでも、日本語を使用することができます。 |
| | 10 | |
| | 11 | Trac の内部では ([http://trac.edgewall.org/milestone/0.10 0.10] 以降) Python の |
| | 12 | 'Unicode binary' 形式で文字列を処理し、 Web の表示は `UTF-8`で行われるため、 |
| | 13 | (対応するフォントがあれば) どのような言語であっても取り扱うことができます。 |
| | 14 | (See: TracUnicode) |
| | 15 | |
| | 16 | |
| | 17 | === [wiki:TracEnvironment Environment] === |
| | 18 | [http://trac.edgewall.org/wiki/DatabaseBackend バックエンドのデータベース] には |
| | 19 | `UTF-8` でデータ (Wiki ページ, チケット) が保存されます。 |
| | 20 | |
| | 21 | 添付ファイルはデータベースに格納されません。 Environment の `attachments` |
| | 22 | ディレクトリ配下に、 URL エンコードされたファイル名で保存されます。 |
| | 23 | [[BR]]→ ブラウザが URL エンコードに `UTF-8` を使用していない場合、ファイル名が |
| | 24 | 文字化けするかもしれません。 |
| | 25 | |
| | 26 | [wiki:TracIni trac.ini ファイル] 他、Environment に配置するファイル |
| | 27 | (サイトヘッダや [wiki:WikiMacros Wiki マクロ] など) は、 `UTF-8` |
| | 28 | で作成してください。 (`BOM (Byte Order Mark)` は付けない方が安全です) |
| | 29 | |
| | 30 | |
| | 31 | === [wiki:TracBrowser リポジトリブラウザ] === |
| | 32 | 今のところ Trac が正式に対応している |
| | 33 | [http://trac.edgewall.org/wiki/VersioningSystemBackend バックエンドのバージョン管理システム] |
| | 34 | は、 Subversion だけです。 ([http://trac-hacks.org Trac Hacks] などには、 |
| | 35 | 他のバージョン管理システムを使うためのプラグインがありますが、 |
| | 36 | 動作状況等未確認です。) |
| | 37 | |
| | 38 | バージョン管理下のファイルは、 MIME Viewer という機能で HTML 変換し、 |
| | 39 | リポジトリブラウザに表示されます: |
| | 40 | 1. `svn:mime-type` 属性もしくはファイルのサフィックスが、画像のように表示可能な |
| | 41 | バイナリファイル形式の場合は、 `<img>` 要素として表示されます。 |
| | 42 | 2. 表示できないバイナリファイル (`application/octet-stream` 等) の場合は、 |
| | 43 | ダウンロードへのリンクが表示されます。 |
| | 44 | 3. バイナリファイルと判別されない場合、全てテキストファイルとして Web |
| | 45 | ページに表示されます。 |
| | 46 | 1. ファイルに設定された `svn:mime-type` 属性が `text/html; charset=utf-8` |
| | 47 | のように `charset=` を含む場合は、その文字コードでファイルを読み込みます。 |
| | 48 | 2. ファイルに `BOM (Byte Order Mark)` が付いていれば、適切な `UTF` |
| | 49 | でファイルを読み込みます。 |
| | 50 | 3. ファイル個別に判定できない場合は、 [wiki:TracIni trac.ini ファイル] の |
| | 51 | `[trac]` セクション `default_charset` オプションに指定された文字コードで |
| | 52 | ファイルを読み込みます。 |
| | 53 | このコンフィグの初期値は `iso-8859-15` なので、日本語で Trac |
| | 54 | を使用する場合は、まず最初に変更する設定になると思います。 |
| | 55 | |
| | 56 | Python 2.3 配布には、日本語だけで使用されている文字コード(`shift_jis`, `euc-jp` |
| | 57 | など) の codec が含まれていません。これらの文字コードを使用したい場合は、別途 |
| | 58 | [http://www.python.jp/Zope/download/JapaneseCodecs JapaneseCodecs] |
| | 59 | をインストールする必要があります。 |
| | 60 | Python 2.4 配布では、 !JapaneseCodecs が同梱されています。 |
| | 61 | |
| | 62 | |
| | 63 | === 添付ファイル === |
| | 64 | 添付ファイル表示もバージョン管理下のファイルと同じく、 MIME Viewer が行います。 |
| | 65 | |
| | 66 | ただし添付ファイルでは、 (`svn:mime-type` 属性のような) ファイル毎の文字コード |
| | 67 | 指定はできないので、 `BOM` による `UTF` の判別ができなければ、 `default_charset` |
| | 68 | に指定した codec に固定されます。 |
| | 69 | |
| | 70 | |
| | 71 | === [wiki:TracAdmin コンソール] === |
| | 72 | [wiki:TracAdmin trac-admin コマンド] の入出力では、使用するコンソールの |
| | 73 | 文字コードが自動判別されます。 |
| | 74 | ([http://trac.edgewall.org/milestone/0.10 0.10] 以降) |
| | 75 | |
| | 76 | |
| | 77 | === [wiki:TracNotification メール通知] === |
| | 78 | Trac が送信するメールは `UTF-8` が `Base64` か `quoted-printable` で 7bit-safe |
| | 79 | な形式にエンコードされています。MUA がこれらのエンコードに対応していない場合、 |
| | 80 | 文字化けする可能性があります。 (See: TracNotification) |
| | 81 | |
| | 82 | |
| | 83 | ---- |
| 32 | | |
| 33 | | プレゼンテーション層の処理は、 `templates` ディレクトリ配下の !ClearSilver テンプレートに |
| 34 | | 集約されているのですが、実際に表示される用語などが `trac` ディレクトリ配下の Python コード内に |
| 35 | | ハードコードされているため、 Trac が gettext() などの多言語 API に対応しない限り、 |
| | 86 | これを日本語化した手順を記述します。 |
| | 87 | |
| | 88 | |
| | 89 | === Web 画面のコンテンツ === |
| | 90 | [wiki:TracJa#TracのI18N対応状況 前項] の通りです。 |
| | 91 | 日本語化作業で変更した点はありません。 |
| | 92 | チケット属性について付記します。 |
| | 93 | |
| | 94 | |
| | 95 | ==== チケット属性名 ==== |
| | 96 | チケット属性の名前は、ほとんどの画面で日本語の属性名が表示されますが、 |
| | 97 | レポートの検索結果画面は例外です。 |
| | 98 | レポートの検索結果画面でのチケット属性の列名は、検索に使用した SQL |
| | 99 | の列名がそのまま表示されます。 |
| | 100 | ですが SQL の SELECT 句で `AS` を挿入すれば、列名を日本語化することが出来ます。 |
| | 101 | ただし `modified` や `description` など、特定の表示フォーマットに使用する列名 |
| | 102 | (See TracReports) は変更するとフォーマットされません。 |
| | 103 | |
| | 104 | |
| | 105 | ==== チケット属性の値 ==== |
| | 106 | チケット属性の値は、データベースにそのまま保存されます。 |
| | 107 | データベースには `UTF-8` であれば保存できるので、リストボックス形式の属性は |
| | 108 | [wiki:TracAdmin trac-admin コマンド] で日本語に変更可能です。 |
| | 109 | たとえば分類のデフォルトは `defect`, `task`, `enhancement` ですが `不具合`, |
| | 110 | `タスク`, `機能追加` のように日本語に変更することができます。 |
| | 111 | とは言え、プロジェクト毎に必要となる用語は異なるでしょうから、 Trac-Ja |
| | 112 | では翻訳対象としていません。 |
| | 113 | |
| | 114 | 例外は「ステータス (`Status`)」の値です。 |
| | 115 | チケットの状態遷移が Python ソースにハードコードされているため、 |
| | 116 | 変更すると多くの箇所にパッチしなければなりませんし、 |
| | 117 | 今後の Trac リリースに対応できなくなるおそれがあります。 |
| | 118 | |
| | 119 | [http://trac.edgewall.org/milestone/0.11 0.11] か |
| | 120 | [http://trac.edgewall.org/milestone/0.12 0.12] で、導入される予定の |
| | 121 | [http://trac.edgewall.org/wiki/WorkFlow Flexible/Extensible Ticket Workflow] |
| | 122 | では、日本語化できるようになる可能性があります。 |
| | 123 | |
| | 124 | |
| | 125 | === Web 画面のテンプレート === |
| | 126 | プレゼンテーション層の処理は、 `templates` ディレクトリ配下の !ClearSilver |
| | 127 | テンプレートに集約されているのですが、実際に表示される用語などが `trac` |
| | 128 | ディレクトリ配下の Python コード内にハードコードされているため、現時点では、 |
| 38 | | Wiki ページとして同梱されているオンラインマニュアルは、 `wiki-default` ディレクトリにある |
| 39 | | ファイルを翻訳すれば地域化することが出来ます。 |
| 40 | | (マニュアルについてはロケールを指すディレクトリを作成して、その下にマニュアルを |
| 41 | | 置くという [http://projects.edgewall.com/trac/wiki/TracGuideTranslations 案] も出ていましたが、 |
| 42 | | 差分翻訳が難しいなど実用上に問題があるため放置されています。) |
| 43 | | |
| 44 | | レポートやカスタムクエリの検索結果画面での、チケット属性の列名は |
| 45 | | 検索に使用した SQL の列名がそのまま表示されます。 |
| 46 | | そのため SQL の SELECT 句で `AS` によって列名を日本語化することが出来ます。 |
| 47 | | ただし、 `modified` や `description` など特定の用途に使用される列名 |
| 48 | | (See TracReports) は変更すると表示形式が変わってしまいます。 |
| 49 | | |
| 50 | | レポートの検索結果画面やチケット閲覧画面での、チケット属性の値については、 |
| 51 | | データベースの値をそのまま使用しているため、一部の属性は翻訳することが困難です。 |
| 52 | | * ステータス (Status): チケットの状態遷移がハードコードされている |
| 53 | | その他の属性は、 `trac-admin` コマンドで変更することで日本語化できますが、 |
| 54 | | プロジェクト毎に必要となる用語は異なるでしょうから、 Trac-Ja では翻訳対象と |
| 55 | | していません。 |
| 56 | | |
| 57 | | |
| 58 | | == Trac-Ja の概要 == |
| 59 | | Trac 配布物を日本語に翻訳しました。Trac の用語は TracTermsJa に示した通りとなっています。 |
| 60 | | |
| 61 | | 配布は [http://www.i-act.co.jp/project/products/products.html InterAct Web サイト公開資料ページ] で |
| 62 | | 行っています。 |
| 63 | | |
| 64 | | |
| | 131 | また [http://trac.edgewall.org/milestone/0.10 0.10] 以降、 Trac |
| | 132 | が内部処理に使用する文字コードが `UTF-8` から `Unicode binary` に変更されました。 |
| | 133 | この変更によって、文字列の折り返しや切り落としが、 |
| | 134 | 多バイト文字のバイト境界で行われないようになりましたが、 |
| | 135 | Python コード内で非 `ASCII` を使用する場合、 `u'日本語文字列'` のように |
| | 136 | `Unicode binary` 文字列を使わないと動かない箇所があります。 |
| | 137 | この制限は [wiki:WikiMacros Wiki マクロ] や [wiki:TracPlugins プラグイン] |
| | 138 | でも適用されますので、マクロやプラグインを作成したり、 |
| | 139 | 翻訳したりする場合には留意してください。 |
| | 140 | |
| | 141 | [http://trac.edgewall.org/milestone/0.11 0.11] では、テンプレートエンジンが |
| | 142 | !ClearSilver から [http://genshi.edgewall.org/ Genshi] に乗せ換えられ、 |
| | 143 | 表示メッセージは完全に Python コード内に移動します。その上で、 |
| | 144 | 各言語でのメッセージが `gettext` 方式で切り替えられる構造に変更される予定です。 |
| | 145 | ですので、今後の地域化は今までと全く違う形になりそうです。 |
| | 146 | |
| | 147 | |
| | 148 | === Wiki ページ === |
| | 149 | Wiki ページとして同梱されているオンラインマニュアルは、 `wiki-default` |
| | 150 | ディレクトリにあるファイルを翻訳すれば地域化することが出来ます。 |
| | 151 | |
| | 152 | [http://trac.edgewall.org/milestone/0.11 0.11] での多言語化対応も、 |
| | 153 | 今のところ Wiki のマニュアルまでは及んでいません。 |
| | 154 | Wiki の地域化は、まだまだ白紙というのが現状です。 |
| | 155 | |
| | 156 | Trac-Ja から Wiki ページだけを使いたい場合: |
| | 157 | 1. `trac-0.xx.x-ja-x.zip` を展開し |
| | 158 | 2. `wiki-default/check_wiki.py` を削除した上で |
| | 159 | 3. [wiki:TracAdmin trac-admin コマンド] で、 `wiki import` してください。 |
| | 160 | |
| | 161 | |
| | 162 | ---- |
| 69 | | タイムラインやマイルストーンでの日付入力がエラーになる。[[BR]] |
| 70 | | ([http://projects.edgewall.com/trac/ticket/2182 本家チケット 2182] に |
| 71 | | パッチがあります。 |
| 72 | | [http://projects.edgewall.com/trac/milestone/0.10 本家マイルストーン0.10]で |
| 73 | | 対応される予定です) |
| 74 | | * utf-8 以外の charset を使用するコンソール (Windowsを含む) では、 |
| 75 | | `trac-admin` コマンドでの非 ASCII 文字の表示が文字化けする。[[BR]] |
| 76 | | ([http://projects.edgewall.com/trac/ticket/2394 本家チケット 2394] に |
| 77 | | 暫定パッチがあります。このパッチでは文字列長を考慮していないため、 |
| 78 | | 表示上のカラム位置にばらつきが発生しますが、とりあえず読めるようには |
| 79 | | なります。) |
| 80 | | * コンポーネント名などに半角空白文字を 2 つ以上続けて書くと動作がおかしくなる。 |
| 81 | | * `priority` を全て削除すると、ロードマップでの iCalendar 出力に |
| 82 | | スタックトレースが含まれ、不正フォーマットになる。 |
| 83 | | * チケットの概要で 1 文字目の空白文字が削除される。 |
| 84 | | [http://projects.edgewall.com/trac/ticket/2285 本家チケット 2285 参照][[BR]] |
| 85 | | (trac-0.9.1 で対応されましたが、trac-0.9 で作成したチケットでは、 |
| 86 | | データベース登録時に1文字目の空白文字を削除しているので、この現象は解消されません。) |
| 87 | | * マルチバイト文字列の折り返しや切り取りで境界文字が文字化けすることがある。[[BR]] |
| 88 | | ([http://projects.edgewall.com/trac/milestone/0.11 本家マイルストーン0.11] で |
| 89 | | 対応される予定です) |
| 90 | | * 0.9 で作ったプロジェクト環境では、優先度 (priority) のデフォルト値が |
| 91 | | 0.8.x 以前と異なる。[[BR]] |
| 92 | | ([http://projects.edgewall.com/trac/ticket/1861 本家チケット 1861] によると、 |
| 93 | | 今後はこれがデフォルトになるようです) |
| 94 | | * レポートによっては、例外が発生することがあります。詳細は、 [http://projects.edgewall.com/trac/ticket/2773 本家チケット 2773] , [http://projects.edgewall.com/trac/wiki/TracUpgrade TracUpgrade] 参照を参照してください。 |
| 95 | | * 引数を受け取る WikiMacros では、各マクロで引数のサニタイズを行わないと |
| 96 | | 脆弱性の元になります。 Trac および Trac-Ja の配布に含まれるマクロでは |
| 97 | | サニタイズが行われていますが、 Trac Hacks などからマクロやプロセッサを |
| 98 | | 導入する際には、引数がサニタイズされているか確認してから使用するように |
| 99 | | してください。 |
| 100 | | |
| 101 | | これらのバグは、今後のオリジナルのリリースや、 Trac-Ja のリリースで解消されるかもしれませんが、 |
| 102 | | 現状では修正されていません。 |
| | 171 | タイムラインやマイルストーンでの日付入力がエラーになる。 |
| | 172 | (See: [http://trac.edgewall.org/ticket/2182 #2182])[[BR]] |
| | 173 | [http://trac.edgewall.org/milestone/0.11 trac-0.11] |
| | 174 | ではタイムゾーンのハンドリングを含めた対応が予定されていますが、 |
| | 175 | どのような形になるかは未定です。 |
| | 176 | (See: [http://trac.edgewall.org/browser/sandbox/datetime datetime 開発ブランチ], |
| | 177 | [http://trac.edgewall.org/browser/sandbox/datetime-genshi datetime-genshi 開発ブランチ]) |
| | 178 | [[BR]]日付が入力できないと実用上の問題が大きいので、デフォルトの日付書式を |
| | 179 | `%x %X` から `%Y/%m/%d %H:%M:%S` に変更しています。 |
| | 180 | * [wiki:WikiMacros Wiki マクロ] のヘルプが `ascii`, `Unicodebinary` |
| | 181 | 以外のエンコードの場合に `[[MacroList]]` で表示されない。[[BR]] |
| | 182 | マクロヘルプは基本的に class コメントから取得します。この class コメントを |
| | 183 | `Unicode binary` にすることで work arround になるのですが、 |
| | 184 | [wiki:WikiMacros Wiki マクロ] は 3rd-party からも提供されているので、 |
| | 185 | 全てに適用するのは面倒です。マクロヘルプを表示する際に `utf-8` か |
| | 186 | `preferred encoding` から `Unicode bianry` に変換するように変更しています。 |
| | 187 | |
| | 188 | |
| | 189 | === 修正していないバグ === |
| | 190 | これらのバグは、今後のオリジナルのリリースや、 Trac-Ja |
| | 191 | のリリースで解消されるかもしれませんが、現状では修正されていません。 |
| | 192 | |
| | 193 | * `priority` を全て削除すると、ロードマップでの iCalendar |
| | 194 | 出力にスタックトレースが含まれ、不正フォーマットになる。 |
| | 195 | * 変数を使用するレポートで、例外が発生することがある。 |
| | 196 | (See: [http://trac.edgewall.org/ticket/2773 #2773], |
| | 197 | [http://trac.edgewall.org/wiki/TracUpgrade TracUpgrade])[[BR]] |
| | 198 | [http://trac.edgewall.org/changeset/2941 "[2941]"] で一旦解消されましたが、 |
| | 199 | [http://trac.edgewall.org/changeset/3300 "[3300]"] で上書かれています。 |
| | 200 | [http://trac.edgewall.org/milestone/0.10.1 trac-0.10.1] |
| | 201 | 以降では解消されるかもしれません。 |
| | 202 | * 複数のバージョンを持つ Wiki ページで ''このバージョンを削除'' |
| | 203 | ボタンをクリックすると、削除の警告メッセージに |
| | 204 | 「このページには1つのバージョンしかありませんのでページを完全に削除します!」 |
| | 205 | と出力されるが実際に削除されるのは、 ''このバージョン'' のみである。 |
| | 206 | (See: [http://trac.edgewall.org/ticket/3928 #3928]) |
| | 207 | * チケットのメール通知を有効にしている場合で、 [wiki:TracIni trac.ini ファイル] |
| | 208 | の `[notification]` セクション `always_notify_updater` オプションを `false` |
| | 209 | に設定している場合は、チケット登録時の通知メールが送信されない。 |
| | 210 | (See: [http://trac.edgewall.org/ticket/3654 #3654])[[BR]] |
| | 211 | ([http://trac.edgewall.org/changeset/3808 "[3808]"] で |
| | 212 | [http://trac.edgewall.org/browser/branches/0.10-stable trac-0.10 保守ブランチ] |
| | 213 | に取り込まれたので、 [http://trac.edgewall.org/milestone/0.10.1 trac-0.10.1] |
| | 214 | で解消する見込みです。) |
| | 215 | |
| | 216 | |
| | 217 | ---- |
| | 218 | == セキュリティ上の注意点 == |
| | 219 | Trac を使用する上でのセキュリティ上の注意点です。 |
| | 220 | |
| | 221 | |
| | 222 | === [wiki:WikiMacros Wiki マクロ] の導入 === |
| | 223 | [wiki:WikiMacros Wiki マクロ] では、受け取った引数を表示に含める場合、 |
| | 224 | `trac.util.escape()` を使用してサニタイズを行わないと脆弱性の原因になります。 |
| | 225 | |
| | 226 | サニタイズの実施は各マクロで行う必要があります。 |
| | 227 | Trac および Trac-Ja の配布に含まれるマクロではサニタイズが行われていますが、 |
| | 228 | マクロを自作する場合や、 |
| | 229 | [http://trac-hacks.org/ Trac Hacks] 等からマクロを導入する際には、 |
| | 230 | 各自で確認してから使用するようにしてください。 |
| | 231 | |
| | 232 | |
| | 233 | === コメント Spam 対策 === |
| | 234 | 最近 Trac を標的にしたコメント Spam が発生しています。 |
| | 235 | |
| | 236 | Public に公開する Trac では [wiki:TracPermissions パーミッション] |
| | 237 | を適切に設定したり、 [http://trac.edgewall.org/wiki/SpamFilter 本家 Wiki] |
| | 238 | を参考に [http://trac.edgewall.org/browser/sandbox/spam-filter SpamFilter] |
| | 239 | を導入するなど、対策を怠らないようにしてください。 |