きっかけ
ブラウジング中や電子書籍を読んでいるとき、ちょっと引っかった文章の翻訳にdeepl-pythonを使っています。
しかし、ブラウザや電子書籍からコピーした文字列にはスペースが含まれているため、クリップボードからペーストした文字列を"
で囲む必要があります。
これまで"
の挿入を手作業で行っていましたが、コマンド一発でクリップボードに保存された文章を翻訳できる簡単なpythonコードを書きました。
準備
- あらかじめDeepLのAPI Keyを取得
- deepl-pythonとpyperclipをローカル環境にインストール
pip3 install --user deepl
pip3 install --user pyperclip
pythonコード
下記コードを作成し~/.local/bin/deepl_en.py
に保存
import pyperclip
import deepl
# DeepL APIキーを設定
API_KEY = "YOUR_API_KEY"
# DeepL翻訳クライアントを作成
translator = deepl.Translator(API_KEY)
# クリップボードから文字列を取得(文字列から不要な改行も削除)
text = pyperclip.paste().replace("\n", "")
# 翻訳を実行(日本語への翻訳なら"EN-US"を"JA"に)
translation = translator.translate_text(text, target_lang="EN-US")
# 翻訳結果をターミナルに表示
print(translation.text)
呼び出し
翻訳したい文章をクリップボードに取り込んで、コンソール上で
python3 ~/.local/bin/deepl_en.py
と叩けばOKですが、面倒なのでShellにエイリアスを追加。
alias De='python3 ~/.local/bin/deepl_en.py'
おまけ
セキュリティ上、API Keyは環境変数DEEPL_AUTH_KEY
に入れる設定のほうが安心かもしれませんね。
それから、もしsdcv(stardict形式の辞書をコンソールで表示)をお使いなら、クリップボードから一発で辞書が引けて便利です。
sdcv -u "YOUR_STARDICT" -n $(xclip -o)
環境によるのかもしれませんが、最新のgoldendictはバックグラウウンドで無駄にCPUやメモリーを浪費するうえ、Waylandにも未対応のようなので、当面、辞書検索も翻訳もコンソールで行うつもりです。