Google Translate PDF Formatter
何をするか
PDFからコピペした文字列を、Google Translateへの貼り付け時に一文ごとの改行になおす。
スクリプト
// ==UserScript== // @name Google Translate PDF Formatter // @namespace example // @include https://translate.google.co.jp* // @description // @grant none // ==/UserScript== (function () { var $ta = document.getElementById('source'); $ta.addEventListener('change', function () { var text = $ta.value; text = text.replace(/-\n/g, '').replace(/\n/g, ' ').replace(/\. /g, '.\n'); $ta.value = text; }); }) ();
例
例えば以下のPDF文章があったとする。
- sample.pdf
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna ...
これが(PDFでなく)メモ帳やWebブラウザ上の文書であったなら、普通はコピーするとすべてつながった文字列になる。
- メモ帳やWebブラウザ上のコピー
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna ...
しかし、PDFではその構造上、見たままの折り返し位置で改行されてしまう。
- PDF上のコピー
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna ...
特に英語の論文を翻訳しつつ読みたい時など、翻訳サイトでは改行が挟まっては上手く翻訳してくれない。かといって、そのたびに改行を消していては非常な労力を要する。
クリップボードにコピーされる文字列に改行が入ってしまうのは仕方ないとして、それを貼り付けて利用する際に、自動的に整形してくれれば少しはましになる。
- PDFからコピーしてGoogle翻訳に貼り付け後、本スクリプトによって整形された文字列
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna ...
もう少し詳しく
- Google 翻訳の左欄に文字列を貼り付けた際、以下の置換処理を実行
- 正確には、changeイベントが発行された時=中身を変えた後、フォーカスを外した時
- 「
/-\n/
」→「''
」- ハイフンを挟んで2行にまたがった1単語の間の改行を消去
- 「
/\n/
」→「' '
」- その他の改行を半角空白に置換
- 「
/\. /
」→「'.\n'
」- ピリオド+半角空白を、ピリオド+改行に置換
- 複数文にわたる文章を一度に翻訳にかけると、訳との対応を追いづらくなるため、一文ごとに改行した方が個人的に読みやすい
- しかし、「e.g.」など文の終端でないピリオドもあるため、後ろに空白が続くかどうかで簡易的に見分けている
- 簡易的な措置なので文章によっては上手く文ごとの改行にならないかもしれないが、その辺は手作業の修正で