目次

1. 翻訳データの検索
2. 翻訳データの書き方
3. 正規表現を使う
4. 再帰的な置換
5. 今後
補足A. ブックマークレット

1. 翻訳データの検索

 Japanize は、ウェブサイトのホスト名に基づいて対応する翻訳データを検索します。その際、ホスト名の先頭の「www.」については、無視します。

ホスト名 対応する翻訳データ
flickr.com flickr.com
www.flickr.com flickr.com
api.flickr.com api.flickr.com

2. 翻訳データの書き方

 ウェブサイトの翻訳は Mozilla Firefox の機能拡張による DOM 要素の操作として行われます。機能拡張は、DOM のテキスト要素を逐次置換することで、翻訳を行います。たとえば、「Please Login」というテキスト要素を「ログインしてください」という日本語に変換するためには、以下のように翻訳データを定義します。

元の HTML ...html">Please Login</a>...
翻訳データ Please Login => ログインしてください
 このような正規表現を使わない変換ルールにおいては、テキスト要素の周囲にある空白 (SP CR LF HT VT NBSP) はそのまま保存されます。

 翻訳用の英語フレーズを切り出す際には、ブックマークレットを使うと便利です。詳しくは、補足A. ブックマークレット をごらんください。

3. 正規表現を使う

 通常の翻訳ルールでは難しい場合、正規表現を使うことも可能です。たとえば、「You have 3 mails」というテキスト要素を「3通のメールがあります」と翻訳したい場合は、以下のように翻訳データを定義します。

元の HTML ...cgi"> You have 3 mails </a>...
翻訳データ /^ You have (\d+) mails $/ => $1通のメールがあります
 誤翻訳を防ぐため、正規表現においては、全置換のみをサポートしています。つまり、正規表現は上の例のように、必ず「/^」で始まり「$/」で終わらなければなりません。また、前後の空白についても、必ず定義する必要があります。

4. 再帰的な置換

 Japanize では、日付のような複雑なデータを翻訳するために再帰的な翻訳データを定義することができます。再帰的な変換は、 $R1...$R9 という変数を用いて指示します。たとえば、「Thu, Aug 10 2006」を「2006年8月10日 (木)」に翻訳するための定義は、以下のように書くことになります。

元の HTML ...cgi">Thu, Aug 10 2006</a>...
翻訳データ /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{1,2}) (\d{4})$/ => $4年$R2$3日 ($R1)
Mon => 月
Tue => 火
Wed => 水
Thu => 木
Fri => 金
Sat => 土
Sun => 日
Jan => 1月
Feb => 2月
Mar => 3月
Apr => 4月
May => 5月
Jun => 6月
Jul => 7月
Aug => 8月
Sep => 9月
Oct => 10月
Nov => 11月
Dec => 12月

5. 今後

 今後の拡張について知りたい方、要望をお持ちの方は、開発者のブログをご覧ください。

補足A. ブックマークレット

 英語等で書かれたウェブサイトから翻訳用の文字列を切り出すには、ブックマークレットを使うと便利です。ここでは、2つのブックマークレットを紹介します。

ブックマークレット 説明
テキストノード一覧の生成 日本語を含まない DOM テキストノードの一覧をポップアップウィンドウに表示するブックマークレットです。このブックマークレットの出力をコピペして、翻訳データを作り始めるといいでしょう。
テキストノード検索 指定した文字列含むテキストノードを検索し、そのノードの文字列を表示するブックマークレットです。テーブルに定義したはずなのに翻訳されないノードがある場合、その文字列を確認するために使うことができます。なお、正規表現を用いた検索も可能となっています。
 ブックマークレットをコピーするには、表のリンクになっている部分を右クリックして、ポップアップメニューから「リンク URL をコピー」を選択してください。