(2020年12月26日追記) Kindle Cloud Readerの仕様変更により発生していたエラーに対処しました。旧版はgistに置いてあります。

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

 

(2020年3月25日追記)

より高品質な翻訳だと話題のDeepLを使ったブックマークレットを公開しました。ぜひお試しください:

kamiとかxodoを使えば英語pdfにgoogle翻訳を便利に使うことができて爆速に読める、という話を以前しましたが、英語の情報リソースといえば、他にも洋書があります。

kindleで洋書を買うと、アプリ内の翻訳機能を使うことができます(オンライン時のみ)。でも僕はあまりスマホで少しずつ洋書を読むというよりは、pcでガバっと読み進めるというやり方のほうが好きです。

しかしkindle cloud readerではコピー対策なのか、クリップボードを利用することができません。そこで、下記記事を参考にしてブックマークレットを作りました。

もしchromeをお使いなら、このページのままで良いのでurlバーの星マークをクリックしてをブックマークし、「その他」からブックマークの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.KindleReaderUI !== 'undefined') {
      w = window;
    } else if (window.length) {
      for (var i = 0; i < window.length; i++) {
        if (typeof window[i].KindleReaderUI !== 'undefined') {
          w = window[i];
          break;
        }
      }
    }
    if (typeof w === 'object') {
      kObj = w.KindleReaderUI;
      kDoc = w.document;
      var sId = null;
      var eId = null;
      if (typeof kObj.ACRExtensions === 'undefined') {
        kObj.ACRExtensions = true;
        var c = function () {
          var s = kObj.getSelection();
          if (s) {
            if (sId != s.start || eId != s.end) {
              sId = s.start;
              eId = s.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_sep', kDoc).remove();
            $('#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">Translate</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://translate.google.com/?hl=ja&ie=utf-8#view=home&op=translate&sl=auto&tl=ja&text=' + encodeURIComponent(r), 'Google Translate' , "height=600,width=776,location=0,menubar=0,scrollbars=1,toolbar=0");
              }
            });
          }
        };
        setInterval(c, 200);
        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.');
    }
  })();

そしてkindle cloud readerで読みたい本を開いて先ほど保存したブックマークをクリック。

これでgoogle翻訳機能が有効化されました。文をドラッグすると、ポップアップで表示されるメニューに「Translate」が追加されました。これをクリックすると、ポップアップでgoogle翻訳のウインドウが開き、翻訳結果が確認できます。

関連記事

MH-Z19CとM5StickCで二酸化炭素濃度モニタリング

【神軽量HMD】Avegant Glyph 改造: 瓶詰堂さんのaltglyphを作った

PC、iPad、Android、switchもドックいらず!あまりに万能なusb-cハブが最強だった

磯野~WSL2でCUDAしようぜ~

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

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

コメント

  1. amatsukaze3

    すごすぎます😭公開くださり、ありがとうございます!!やってみます。

  2. 試してほしい!洋書を読むハードルをさげるKindleの翻訳機能を活用する方法 | らくるんご

コメントを返信する

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