Skip to content

About

Click-to-translate Discord messages into Japanese. Chrome MV3 extension using DeepL (Google Translate fallback), backend-free.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Discord JP Quick Translate

パソコンの Chrome で開いた Discord のメッセージを、クリックしたときだけ翻訳する非公式の拡張です。 DeepL API Free または Google Cloud Translation API(Basic v2)のキーを、自分で取得して設定します。

利用する前に

  • Discord による承認・提携・後援を受けていない非公式拡張です。
  • Chrome ウェブストアには掲載していません。「デベロッパーモード」を有効にして、手動で読み込む必要があります。更新も手動です。
  • Discord のページに表示されたメッセージを読み取り、翻訳ボタンを追加します。翻訳を押した文章の対象部分を、選択した DeepL または Google の翻訳 API へ送ります。開発者の中継サーバーは使いません。
  • サービスの契約・利用量に応じて費用がかかる場合があります。機密情報など、外部へ送れない文章には使わないでください。送信範囲・保存内容も確認してください。

インストール(ビルド不要)

必要なのは パソコン版 Chrome 114 以降と、自分の翻訳 API キーです。Discord のデスクトップアプリやスマートフォンでは使えません。Node.js のインストールやコマンド入力は不要です。

ビルド済み ZIP(v1.0.2)をダウンロード · 配布ページ

  1. ZIP を展開し、フォルダーを「ドキュメント」の中など、使い続ける場所に置きます。Windows では ZIP を右クリックして「すべて展開」を選びます。
  2. Chrome のアドレスバーに chrome://extensions/ と入力します。
  3. 右上の 「デベロッパーモード」をオンにします。
  4. **「パッケージ化されていない拡張機能を読み込む」**を押し、展開した manifest.json が入っているフォルダーを選びます。
  5. Chrome 右上の拡張機能ボタンからこの拡張を開き、「設定を開く」で API キーと使用する翻訳サービスを設定して保存します。
  6. Chrome で Discord を開くか、開いているタブを再読み込みします。メッセージにマウスを重ね、「翻訳」を押すと使えます。

詳しい導入・更新手順と、うまくいかないときの確認事項

GitHub の「Source code (zip)」は開発者向けです。上のビルド済み ZIP を選んでください。 読み込み後も展開したフォルダーを使うので、移動・削除しないでください。

更新するとき

リリース一覧から新しいビルド済み ZIP を取得し、展開した中身を現在読み込んでいるフォルダーへ上書きします。 chrome://extensions/ で既存の拡張の再読み込みボタンを押し、Discord のタブも再読み込みしてください。 同じ場所・同じ登録を使えば、保存済みの API キーは通常そのまま使えます。更新のために拡張を削除したり、別のフォルダーから新規登録したりする必要はありません。

API キー

DeepL API Free

DeepL API でキーを取得し、DeepL 欄へ保存します。 この拡張が接続するのは api-free.deepl.com です。Pro 用エンドポイントには対応していません。

無料枠を使い切った場合はエラーを表示して停止します。Google へ自動で送信し直すことはありません。

Google Cloud Translation

Google Cloud Console で Cloud Translation API を有効化して API キーを作成します。 キーの API 制限を Cloud Translation API に設定し、割り当て・料金・利用条件を確認してください。 使用する翻訳サービスで Google を選択した場合だけ、このキーを通常の翻訳に使います。

設定画面の「テスト」は入力中のキーで Hello を翻訳する実通信です。保存前でも実行でき、API 使用量に含まれます。

使い方

Discord のメッセージにマウスを重ね、「翻訳」をクリックします。 翻訳は本文の下に表示され、同じボタンで表示・非表示を切り替えられます。 失敗した場合は理由を表示し、「再試行」で再度要求できます。自動再試行はしません。

ポップアップで OFF にすると、開いている Discord タブのボタンと翻訳表示を削除します。 すでに送信済みの要求は、停止操作やタイムアウトの時点で翻訳先に処理されている場合があり、課金の取消しは保証できません。

1 メッセージは 8,000 文字までです。要求を最大 20 文章・合計 16,000 文字に分け、各タブから順番に送信します。 ページのスクリプトによる合成クリックは受け付けません。この対策は、侵害されたブラウザーや悪意ある別の拡張に対する保証ではありません。

送信範囲とコード保護

翻訳ボタンを押したメッセージの、表示済みの本文を対象とします。返信先プレビュー、添付、リアクション等は除外します。 Discord の code / pre、メンション要素、絵文字画像として認識した部分、および本文中のバッククォートで囲まれたコード・URL・Discord 記法のメンション・絵文字を分離し、その間の文章だけを送信します。

保護部分はコンテンツスクリプト内に保持し、翻訳後にそのまま戻します。保護部分を挟む文章は別々に翻訳されるため、文脈や語順が不自然になる場合があります。 通常の文章として貼られたコードやログは、自動ではコードと判定できません。Discord の DOM 変更でも抽出が影響を受けるため、機密情報の翻訳前には内容を確認してください。

プライバシーと保存

項目 内容
送信先 選択した DeepL または Google の翻訳 API
開発者のサーバー・分析 使用しない
API キー この拡張の storage.local に保存。暗号化保管ではない
キーにアクセスする画面 Service Worker と、この拡張の設定画面。コンテンツスクリプトからの設定取得は拒否
設定 言語・翻訳先・ON/OFF と変更通知用の値を storage.sync に保存。Chrome の同期設定により他端末へ同期される
翻訳キャッシュ 端末内 IndexedDB に翻訳文・ハッシュ・翻訳先・保存日時を保存
使用量 端末内 storage.local に月別の推定文字数を保存
Discord の認証情報 ユーザートークン、Bot トークンを取得・使用しない

翻訳時には本文の対象部分を外部の翻訳サービスへ送信します。開発者の中継サーバーはありません。 API キー・本文・翻訳文を診断ログへ出力しません。API キーは Chrome のプロフィールを扱える利用者・管理者から秘密にできる仕組みではありません。

キャッシュの再利用期限は保存から 30 日です。期限切れデータは Service Worker 起動時・次の翻訳時、および該当データの読取り時に削除します。 ブラウザーや拡張機能が停止している間に、30 日ちょうどで削除する保証はありません。 設定画面の「キャッシュをクリア」で保存済みキャッシュと、開いている Discord タブの翻訳表示を消します。キー・利用量は消しません。 v1.0.1 以前のキャッシュは新方式で再利用せず、同じ期限切れ削除または手動クリアの対象になります。

使用量・費用

ポップアップの文字数は、この端末で成功応答を受けた翻訳要求の概算です。接続テストを含み、キャッシュ利用は含みません。 他の端末・アプリの使用、翻訳先の集計期間・数え方、タイムアウトした要求などにより、請求値と一致しないことがあります。 この拡張には金額による課金停止機能はありません。

Google Cloud の通常の予算アラートは通知であり、自動的な利用停止を意味しません。 サービス側の利用状況・割り当て・課金制御を確認してください。 Google Cloud の予算に関する説明

開発と検証

ここからは、ソースコードを変更したい方向けです。ビルド済み ZIP を使うだけなら、この作業は不要です。 Node.js 22.12 以降を用意し、リポジトリを取得したフォルダーで実行します。

npm ci --ignore-scripts
npm test
npm run test:coverage
npm run typecheck
npm run build
npm audit

ビルド後、Chrome のデベロッパーモードで生成された dist/ を読み込みます。更新時も同じ dist/ を使い、拡張機能と Discord のタブを再読み込みしてください。

  • 本体の Worker・プロバイダー・キュー・IndexedDB キャッシュ・本文抽出・DOM 表示・設定画面をテストします。
  • Chrome API、HTTP、IndexedDB の環境境界は隔離したテスト用データを使用し、実キー・実メッセージ・外部翻訳通信は使用しません。
  • カバレッジ基準は statements / branches / functions / lines がそれぞれ 80%。集計対象は src/**/*.ts です。React 画面の .tsx は別途 UI テストで確認します。
  • 依存ロックを含めて配布します。Vite / Vitest の世代が重複しないよう overrides を固定しています。
  • 2026-09-19 確認時点では、このリポジトリに GitHub Actions ワークフローはありません。Actions の Node 20 ランタイム依存もありません。

v1.0.2 の変更

  • API キーを持つ storage.local を信頼された拡張画面だけに制限し、設定の読取り・変更要求の送信元を検証。
  • API エラー・不正応答・タイムアウト時にもボタンを復帰。エラー後に再試行可能。
  • OFF を開いている Discord タブへ反映し、チャンネル移動で勝手に ON になる不具合を修正。
  • 描画済みのコード・メンションなどを端末内に残し、その間の文章だけを翻訳先へ送る方式へ変更。
  • 編集済みメッセージはクリック時点の本文を使用。設定変更・キャッシュ削除・画面移動後の古い応答は表示しない。
  • 期限切れキャッシュを実際に削除し、使用量の同時更新による欠落を修正。
  • DeepL → Google の自動切替を廃止。選択した翻訳先だけを使用。
  • 実装本体を使った回帰テストへ置き換え、開発依存を更新。

注意とライセンス

Discord Inc. とは関係のない非公式拡張です。Discord による承認・提携・後援は受けていません。 Discord API や Gateway には接続せず、メッセージ送信・リアクション・DM などのアカウント操作を自動化しません。 Discord や各翻訳サービスの利用条件を確認のうえ利用してください。DOM 変更や API 仕様変更で動作しなくなる場合があります。

MIT License — Copyright (c) 2026 ryojihido/RHworks

ビルド済み ZIP には利用ライブラリのライセンスも同梱しています:THIRD_PARTY_NOTICES.txt

About

Click-to-translate Discord messages into Japanese. Chrome MV3 extension using DeepL (Google Translate fallback), backend-free.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages