コンテンツにスキップ

機能

機能

Hover Translate は、読む流れを止めないことを前提に設計されています。ブロックを選び、翻訳を読み、そのまま読み進められるように、UI は最小限に保たれています。

2 つの翻訳モード

Hover Translate にはポップアップから切り替えられる 2 つのモードがあります。

Hover モード

Hover モードでは、段落にカーソルを乗せるだけで、短いディレイを置いてから自動で翻訳されます。

  • 対応するブロック要素 (段落、リスト項目、見出し、表セルなど) にホバーします。
  • 300 ms のデバウンスの後に、カーソルが実際にテキスト上にあるか確認します (padding や画像の上では翻訳しません)。
  • 翻訳結果がブロック付近のフローティングツールチップで表示されます。
  • ブロックから離れるとツールチップは消えます。
Hover モードが選択されたポップアップ

Selection モード

Selection モードでは、テキストを選択するまで何も起きません。長い段落や、特定のフレーズだけを翻訳したい場面に向いています。

Selection モードには 2 種類のトリガーがあります。

  • Shortcut: テキストを選択した状態で Alt+Shift+T を押すと、選択範囲だけが翻訳されます。
  • Auto: マウスを離した瞬間に選択範囲があれば、300 ms 後に自動翻訳されます。

選択範囲をクリアするとツールチップも消えます。

Selection モード + Shortcut トリガーが選択されたポップアップ

言語の自動判定

Hover Translate は、両方のモードでテキスト自体を見て翻訳方向を決定します。

  • テキストに日本語文字 (ひらがな・カタカナ・漢字) が含まれていれば、日本語から英語への翻訳として送信します。
  • 日本語文字が含まれていなければ、英語から日本語への翻訳として扱います。
  • ソース言語を手動で切り替える必要はありません。

ブロック単位の検出 (Hover モード)

Hover モードでは、カーソル下の要素から最寄りの段落相当の祖先要素を探します。

  • 主な対応要素は plih1 から h6tdthblockquotefigcaptiondddt です。
  • 標準的な <p> を使わないモダンなドキュメントサイトにも対応しています (Mintlify の [data-as="p"]、Twitter/X のツイート本文、Notion の公開ページなど)。
  • 既知のセレクタに当てはまらないページでは、十分な量のテキストを含む最寄りのブロック要素をフォールバックとして使用します。
  • 300 ms のホバーディレイとカーソル位置のチェックによって、カーソルが通過しただけ、あるいは padding や非テキスト領域に乗っているだけの場合は翻訳をスキップします。

ページ内ツールチップ

翻訳結果は、元のテキスト付近にフローティングツールチップとして表示されます。

  • Hover モードではブロックの位置に合わせて毎回再計算されるため、翻訳リクエスト中にスクロールしても位置がずれません。
  • Selection モードでは選択範囲の矩形に合わせて表示されます。
  • ツールチップは position: fixed で表示され、画面端に近い場合は上下が反転されます。
  • 右上のコピーボタンで翻訳結果をクリップボードにコピーできます。コピー直後は約 1 秒間チェックマークに変化します。翻訳中やエラー表示中はボタンが非表示になります。
  • エラー時は左側の赤いボーダーと、対応するメッセージで通常表示と区別されます。

LRU 翻訳キャッシュ

同じテキストを同一セッション中に何度も再翻訳しないようにしています。

  • 背景側の Service Worker に、100 件まで保持する LRU キャッシュがあります。
  • 同じテキストへの再翻訳はキャッシュから即座に返されます。
  • これによりリクエスト数を減らし、DeepL Free の月間クォータを節約できます。
  • キャッシュは best-effort です。Service Worker が再起動すると、メモリ上のキャッシュは消去されます。

キーボードショートカット

既定のショートカットは Alt+Shift+T で、Selection モード専用です。

  • Selection + Shortcut モードでは、選択範囲の翻訳を実行します。
  • Hover モードや Selection + Auto モードでは何も起きません (これらのモードは手動トリガーを必要としないため)。
  • 別のキー組み合わせに変更するには、ポップアップの Change リンクから chrome://extensions/shortcuts を開いてください。

クォータ表示

ポップアップには、DeepL の利用状況を確認するためのクォータ表示があります。

  • ポップアップを開くたびに、DeepL の /v2/usage エンドポイントから最新の利用量を取得します (30 秒間キャッシュされ、無駄なリクエストを抑えます)。
  • 結果はプログレスバーで表示されます。
  • 80% を超えるとバーはアンバー系の警告色に変わります。
  • 95% を超えると赤系の危険色に変わります。
  • Refresh を使うと、ポップアップを閉じずに再取得できます。
  • DeepL Free のクォータは毎月自動でリセットされるため、課金なしで翌月に元どおり使えます。
クォータ 38 パーセントの通常状態を示すポップアップクォータ 97 パーセントの危険状態を示すポップアップ

最大文字数のガードレール

大きすぎるブロックは、API に送る前にクライアント側で止められます。

  • 既定値は 1500 文字です。
  • Settings から 500 から 5000 の範囲で変更できます。
  • ホバーまたは選択したテキストが上限を超える場合、コンテンツスクリプトはリクエストを送信せず、代わりに Text too long を表示します。
  • 長い段落や大きな表が多いページでは、上限を下げるとクォータ節約に役立ちます。