(2020年3月31日追記) ニックさんにコメントいただいた内容で、コードがよりロバストになりました!ありがとうございました。

 

最近日本語対応したDeepL Translator、確かにgoogle翻訳に比べて圧倒的に正確かつロバストな結果を返してくれます。

https://www.deepl.com/translator

 

以前このブログでは、ブラウザで読むKindleサービスであるKindle Cloud Readerをgoogle翻訳に対応させるブックマークレットを公開しました:

これはKindle Cloud Readerがコピー対策のためにクリップボードへのコピーを無効にしているためにgoogle翻訳などのブラウザ拡張が使えなくてこまることへの対処でした。今回DeepL翻訳が最高であることがわかったので、DeepL版のブックマークレットも公開します。

追加方法は以前と同じで、まずはこのページで良いのでchromeならURLバーの星型をクリックしてブックマークを作成、場所はブックマックバーが良いでしょう。そのまま「その他」をクリックしてブックマークの編集画面を開き、「URL」の中をすべて削除して以下のスクリプト全文をコピペします。

javascript: (function () {
/* Kindle Translator V 0.4*/
/* based on ACRExtensions via https://github.com/binarycrafts/ACRExtensions */
var w = null;
var kDoc = null;
var kObj = null;
if (typeof window.KindleReaderContextMenu !== 'undefined') {
    w = window;
} else if (window.length) {
    for (var i=0;i<window.length;i++) {
        if (typeof window[i].KindleReaderContextMenu !== 'undefined') {
            w = window[i];
            break;
        }
    }
}
if (typeof w === 'object') {
    kObj = w.KindleReaderContextMenu;
    kDoc = w.document;
    if (typeof kObj.ACRExtensions === 'undefined') {
        kObj.ACRExtensions = true;
        var oldMethod = kObj.show;
        kObj.show = function () {
            var res = oldMethod.apply(kObj, arguments);
            var txtDoc = null;
            var r = null;
            if (typeof (arguments[3]) !== 'undefined' && typeof (arguments[3]['start']) !== 'undefined') {
                var sId = arguments[3]['start'];
                var eId = arguments[3]['end'];
                $('iframe', kDoc).each(function (j, textIframe) {
                    var textIFrameDoc = $(textIframe).contents().get(0);
                    if ($('#'+sId, textIFrameDoc).get(0)) {
                        txtDoc = textIFrameDoc;
                        return false;
                    }
                });
                if (txtDoc) {
                    r = txtDoc.createRange();
                    r.setStartBefore($('#'+sId, txtDoc).get(0));
                    r.setEndAfter($('#'+eId, txtDoc).get(0));
          }
            }
      $('#ACRExtensions_copyC', kDoc).remove();
      var styles = $('<style>.spinner, .dictionary.i18n.expanded {display:none !important;} div#kindleReader_menu_contextMenu { max-height: 35px;}</style>');
            var sepEl = $('<div id="ACRExtensions_copyC_sep" class="kindle_menu_separator"></div>');
      var copyC = $('<div id="ACRExtensions_copyC" class="kindle_menu_button button_enabled ui-corner-left">DeepL</div>');
            $('#kindle_menu_border', kDoc).append(sepEl).append(copyC).append(styles);
            setTimeout(function(){
                sepEl.show();
        copyC.removeClass('button_hidden');
            }, 1);
      $('#ACRExtensions_copyC', kDoc).click(function (evt) {
                if (r) {
                    var newW = window.open('https://www.deepl.com/translator#en/ja/' + encodeURIComponent(r), 'DeepL' , "height=600,width=776,location=0,menubar=0,scrollbars=1,toolbar=0");
                }
            });
            return res;
        };
        alert('Kindle Translator Extension is now active.');
    } else {
        alert('Kindle Translator Extension is already active.');
    }
} else {
    alert('Error: Kindle Translator Extension is not active. The Amazon Cloud Reader window could not be found.');
}
})();

URLの内容を書き換えたら「完了」でブックマークレットを保存します。

Kindle Cloud Readerをブラウザで開き、その状態でブックマックバーにある先程作ったブックマークレットをクリックします。

これで翻訳機能が有効になりました。文章をドラッグすると表示される「DeepL」をクリックすると、別ウィンドウが開いてDeepLでの検索結果が表示されます。上記のブックマークレットは英語専用なので、他の言語からの翻訳に使いたい場合はブックマークレットの「https://www.deepl.com/translator#en/ja/」の部分の「en」をDeepLの対応言語に変更してください。

関連記事

PC、iPad、Android、switchまで。。。あまりに万能なusb-cハブが最強だった

磯野~WSL2でCUDAしようぜ~

Unity recorderとか標準アセットとかがno longer availableで激おこプンプン丸をどうにかする

金属コーヒーフィルターで目が細かいのはどれだ!?比較スペシャル

技術同人誌15冊が無料!いますぐライバルに差をつけろ!

え!!17.3インチモバイルモニタをusb-cで繋いでPCレスPC環境を!?

コメント

  1. ニック

    はじめまして。
    本記事を拝見してコメントいたします。
    素敵な記事をありがとうございます。あなたの記事のおかげで、大変助かっています。

    ありがたく使わせていただいていますが、
    Kindleの本文中に%が含まれていると、翻訳が表示されなくなる現象にあたりました。
    下記のように修正したら問題なく表示されましたこと、お礼とともにお伝えいたします。

    var newW = window.open(‘https://www.deepl.com/translator#en/ja/’ + r, ‘DeepL’ ,

    var newW = window.open(‘https://www.deepl.com/translator#en/ja/’ + encodeURIComponent(r), ‘DeepL’ ,

    (なお、Google翻訳でも同様に発生しておりましたが、同様に改善できました)

    • Drunkar 作成者

      コメントありがとうございます!
      ご指摘の通り、エンコードが必要ですね!コードに修正を反映しました。
      有益なご指摘ありがとうございました。

  2. Naoki

    大変有用な記事を公開頂き、ありがとうございます。
    記事記載の方法で試してみましたが、使用できずにおります。

    ブックマークレットをクリック時に表示されるウィンドウがまず表示されまでん。
    及びテキストドラッグ時に「メモ」と「ハイライト」以外に「DeepL」が表示されません。
    ブラウザをはGoogle Chromeを使用しております(Internet Explorerも試しましたが、実行できまでんせした)

    クロームのURL欄横のサイトの設定を調節してみましたが、変化は起こらず。

    お手数をおかけして大変申し訳ございませんが、使用できない原因や対策等にお心当たりがございましたら、ご教示いただければ幸いです

    よろしくお願い致します。

    • Drunkar 作成者

      ブックマークのURL欄に最初から入っていた文字列(例えばこのページをブックマークしたとしたら、”https://sekailab.com/wp/2020/03/25/deepl-translation-with-kindle-cloud-reader/”)は全部消去されてますでしょうか。残っていると動作しないと思います。
      また、もしかすると環境によってはクォーテーションやダブルクオーテーション(‘ または “)が全角になっていたりするかもしれません。半角でなければ動作しません。
      思い当たるのはそんなところですね・・・

  3. Heineken

    大変有用な情報のご共有ありがとうございます。今の所問題なく使えており、とても便利です!

    • Drunkar 作成者

      嬉しいコメントありがとうございます。お役に立てて何よりです。

  4. 佐藤

    ありがとうございます!本当に助かりました!

    • Drunkar 作成者

      コメントくださり、ありがとうございます!

  5. Rome

    情報共有がありがとうございます。Kindleの洋書の読書のハードルが下がりました。ただ、Chromeでブックマークを設定して便利に使っていましたが、せかラボのブックマークがすでにアクティブになっていると表示されるにもかかわらず、突然、「ハイライトとメモ」しか表示されなくなり、DeepL翻訳ができなくなってしまいました。何が原因か思い当たることはないのですが、もしこれが原因では、ということがありましたらご教示いただけないでしょうか。

    • Drunkar 作成者

      うーむ、難しいですね。F12キーを押してコンソール上のエラーメッセージを見てみるのが一番正確に原因が特定できそうですが、てっとり早く試せるのは以下かなと思います:
      – ページのリロード
      – ブラウザの再起動
      – クッキー、キャッシュの削除(意味がわからない場合は、”クッキーの削除 chrome”などでググってみてください)

  6. おまつ

    はじめまして!探していた情報がこんなわかりやすく説明してくれているページがあったとは、、、とても助かりました!本当にありがとうございます!

    • Drunkar 作成者

      お役に立てて嬉しいです。ありがとうございます。

  7. wachin

    kindleの洋書を読むのに、DeepLで翻訳したかったところこちらを参考にしたら
    スムーズに出来て大変助かりました!
    youtubeの動画ブログで情報を共有したいと思いますが、
    もしダメだったらメッセージいただきましたら取り消しますので、
    どうぞよろしくお願いします!

    • Drunkar 作成者

      紹介いただいてありがとうございます。動画のリンクもコメントでいただけると嬉しいです。

  8. rrr

    いつも使わせていただいてます。
    同じように本日も使っていたところ、急に使用できなくなったのでコメントさせていただきました。
    MACで使用しているのですが、chrome、Safariどちらも使用できない状況です。
    再読み込み、ブラウザの再起動、キャッシュの削除すべて行いましたが効果がありません。
    ご確認いただけますと幸いです。

    • Drunkar 作成者

      windowsのchromeで試してみたところ、依然として使えるようでした。macのデフォルトでなにかブロックされてしまっているのかもしれません。chromeでf12を押してどんなエラーが出ているか確認すれば、なにか手がかりが得られると思います( https://qiita.com/mtanabe/items/e82353c1c6c3ee402a51 )

佐藤 へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です