LinuxでもDeepLアプリのようなショートカット翻訳を使いたい


はじめに

WindowsやMacで使えるDeepLのアプリではctrl-c ctrl-c
で簡単にコピーしたものが翻訳できて英文読むのが捗ります.

同じようなことをLinuxでもしたいと思いました.
調べて見るとdeepl cliのようなものがいくつかあり,これを使って簡単なアプリを作ろうかなと思いましたが, 現在はpro版の公式のapiを利用しないと翻訳結果にアクセスできないみたいです.なので, ブラウザからアクセスすることにしました.

同じようなことをしているものとして, @masan4444さんのLinuxでDeepL翻訳というものがありました.ショートカットにシェルスクリプトを登録するだけで簡単に利用できます.(参考にさせて頂きました.ありがとうございます.)

ただ, 個人的に,

  • 翻訳の度にタブを開かずに同一タブで翻訳して欲しい.
  • 翻訳元,翻訳先の言語を簡単に切り替えたい.
  • 閲覧用ブラウザとは別ブラウザで翻訳したい.
  • 改行を除きたい.
  • [文章1].[文章2] と.のあとに文字列が続く場合[文章1]. [文章2]と.のあとにスペースを入れたい.(スペースがないと翻訳まるごとスキップされることがある.)
  • 英語論文などの単語折り返しの-を除去したい.ex) app-\nleをappleに置換

ということをしたかったので作ってみました.

clip-translator

https://github.com/kosuke55/clip-translator

Install

google chromeのバージョンを確認.

google-chrome --version
Google Chrome 81.0.4044.113

調べたバージョンに最も近いchromedriver_binaryをインストール.

sudo pip install chromedriver_binary==81.0.4044.138.0
pip install chromedriver_binary==

とするとインストールできるバージョンを全て確認することができます.

以下のバッケージをインストール(PyPI登録はしてないです)

git clone https://github.com/kosuke55/clip-translator.git  
cd clip-translator  
sudo pip install -e .  

Setting

以下のスクリプトを実行してキーボードショートカットを登録する.
PrimaryはCtrキーのことです.

python set_keyboard_shortcut.py 'clip-translate' 'clip_translate_c' '<Primary><Alt>c'

手動で登録する場合は,
keyboardと検索して,shorcuts, custom shortcutsの欄を選択.


+ボタンを押して以下の画像のようにショートカットを登録する.
(例ではctrl-alt-cを設定しています.)


サーバー側の方もデスクトップにショートカットを作成したい場合は

python create_desktop_shortcut.py

としてください. デフォルトでは英語->日本語になってます.

Run

作成したデスクトップショートカットを実行するとブラウザが立ち上がる.

またはターミナルから

clip_translate_s

ブラウザが立ち上がった後にctrl-cでtextをコピーしてctrl-alt-cを押すと,自動的にdeeplに送られて翻訳ができる.

Options

clip_translate_s -h
usage: clip_translate_s [-h] [--source SOURCE] [--target TARGET] [--mode MODE]
                        [--split SPLIT] [--remove-hyphen REMOVE_HYPHEN]
                        [--remove-newline REMOVE_NEWLINE]

optional arguments:
  -h, --help            show this help message and exit
  --source SOURCE, -s SOURCE
                        source language (default: en)
  --target TARGET, -t TARGET
                        target language (default: ja)
  --mode MODE, -m MODE  Translation site (deepl or google) (default: deepl)
  --split SPLIT, -sp SPLIT
                        Use wordninja split (default: 0)
  --remove-hyphen REMOVE_HYPHEN, -rh REMOVE_HYPHEN
                        Remove hypen (default: 0)
  --remove-newline REMOVE_NEWLINE, -rn REMOVE_NEWLINE
                        Remove newline (default: 0)

DeepLの代わりにgoogle翻訳を使いたければ

clip_translate_s -m google

とする.

おわりに

とりあえずやりたいことはできた気がします. 公式アプリが出るまでこれで我慢します.