Abstract
理由
Firefox用のアドオン「KeySnail」や「エキサイト翻訳クライアント on KeySnail」プラグインが何をするものなのかといったことは、この記事を読みに来る方には自明だと思うので説明しない。
なお、執筆時点の「エキサイト翻訳クライアント on KeySnail」プラグインの最新バージョンは1.11だ。以下では、これを単に「プラグイン」と記述する。
現状では、このプラグインを利用した英和・和英翻訳が正常に行なわれないという問題が生じている。これは、2010年8月ごろに、エキサイト翻訳の英語(英和・和英)翻訳ページの構成が変更されたためだ。プラグインに関係するのは以下の2点だ。
- 文字エンコーディングがUTF-8に変更された(以前は英語翻訳ページのみShift_JIS)
- GETメソッドによるクエリーでは訳文が表示されない
1は、他の翻訳ページ(ドイツ語など)と共通のエンコーディングになったことを意味する。プラグインに含まれる(英語翻訳ページのみを対象とした)Shift_JIS変換処理をすべて取り除くことができるので歓迎すべき変更だ。
2は、現時点では英語翻訳ページにのみ見られる現象で、ドイツ語翻訳ページなどではGETメソッドのままでも訳文が表示される。ブックマークレットなら、開いたページでユーザーが"翻訳
"ボタンを押せばいいだけの話だが、Ajaxによる非同期処理で訳文を取得するプラグインでは、POSTメソッドに変更する必要がある。
対策
対策としては、プラグインから「Shift_JIS変換処理を取り除く」とともに、「POSTメソッドによるクエリーを行なう」ようにすればいい。
プラグインはFirefoxのプロファイル(Windows Vista/7では、"C:\Users\ユーザー名\AppData\Roaming\Mozilla\Firefox\Profiles\英数文字列.default
"、UNIX系OSでは"~/.mozilla/firefox/英数文字列.default
"など)の"keysnail/plugins
"以下に配置されている。ファイル名は"excite_translation.ks.js
"だ。好みのテキストエディターで内容を書き換えればいい(バックアップなどは各自の判断で)。
- Shift_JIS変換処理を取り除く
- readString()の内容で、英語翻訳のみ特別扱いしていた部分を修正 を、以下の内容に置き換える
- EscapeSJIS()およびJCT11280()は不要になったので、両者とも関数自体を削除
- POSTメソッドによるクエリーを行なう
- readString()で変数uriに設定されるURI末尾の?を削除 を以下の内容に置き換える
- readString()の内容で、GETメソッドをPOSTメソッドに変更 を以下の内容に置き換える。POSTメソッドでクエリーを送るには、setRequestHeader()でコンテントタイプの指定が必要なことに注意
おまけ
和英・英和翻訳処理を正常化するだけなら、上記の修正で十分だ。以下は筆者の趣味による修正である。
ひとつは、「結果表示を一定時間経過で消す」ものだ。このプラグインの登場後に(というか、このプラグインに影響されて)、KeySnailのdisplay.prettyPrint()に追加された第2引数を使って、表示時間そのものと表示開始・終了時のフェード時間を指定する。
もうひとつは、「XMLHttpRequest()呼び出しの単純化」だ。KeySnail自体、Firefoxでしか動作しないのだから、IEなどを考慮してカプセル化されたcreateHttpRequest()を削除して、XMLHttpRequest()を直接呼び出す。
- 結果表示を一定時間経過で消す方法
- readString()で使われているdisplay.prettyPrint()に第2引数を追加する。具体的には、
を、以下の内容に置き換える。
ちなみに、
timeout
が表示時間、fade
が表示開始・終了時のフェード処理の時間だ。それぞれの値(ミリ秒単位)は各自の好みで調整されたい
- readString()で使われているdisplay.prettyPrint()に第2引数を追加する。具体的には、
を、以下の内容に置き換える。
ちなみに、
- XMLHttpRequest()呼び出しの単純化
- readString()の内容で、XMLHttpRequest()呼び出しを修正 を以下の内容に置き換える
- createHttpRequest()は不要になったので、関数自体を削除
なお、以上の修正をすべて行なうパッチを用意した。手作業で修正するのが面倒な人(なおかつpatchの使い方は知っている人)はどうぞ。
初めまして。excite_translation 作者の gongo と申します。
返信削除こちらの記事を参考にさせていただき、リポジトリの方も更新しました。
https://github.com/gongo/keysnail_plugin/blob/master/excite_translation.ks.js
ありがとうございました!
以上、ご報告まで。
リポジトリの更新ありがとうございます。
返信削除記事のリードを一部修正し、リポジトリへのリンクを張りました。