はじめに
2023年Crystalアドベントカレンダーです。これまでに作ったツールでQiita記事にしていなかった DeepL CLI を紹介します。
DeepL CLI
DeepL APIを使用してテキストを翻訳するためのシンプルなコマンドラインツールです。
準備
まず、DeepLから有効なAPIキーを取得し、それを環境変数として設定します。(無料版でも十分に使えます)
export DEEPL_API_KEY=あなたのapiキー
インストール
最新のソースコードをダウンロードし、以下のコマンドを実行します。
cd deepl-cli
shards build --release
有料版の DeepL API Pro を契約している人は下記のように環境変数を指定してエンドポイントを変更してください。(この環境変数はコンパイル時に評価されるので、実行時に指定しても効果がないことにご注意ください。)
DEEPL_API_PRO=1 shards build --release # DeepL API Pro用
コンパイルされたバイナリファイルが bin
フォルダに作成されます。
Linuxユーザーで、deepl-cli を使いたいだけの人は、musl
で静的にコンパイルしたバイナリをGitHub Releaseから入手することもできます(DeepL API Freeのみ)
プロキシ設定(オプション)
プロキシ環境下でも動作します。
export HTTP_PROXY=http://[IP]:[port]
export HTTPS_PROXY=https://[IP]:[port]
使用方法
DeepL Translator CLIを使用するには、deepl
コマンドに続けて渡したい引数を実行します。
Usage: deepl [arguments]
doc Upload and translate a document
-i, --input [TEXT] Input text
-f, --from [LANG] Source language [AUTO]
-t, --to [LANG] Target language [EN]
-u, --usage Check Usage and Limits
-v, --version Show version
-h, --help Show this help
例えば、以下のように使用します:
$ ./bin/deepl deepl -f en -t ja -i "I am a cat"
私は猫である
これで、"I am a cat." が日本語に翻訳されます。
コマンドラインツールなので標準入力を取ることもできます。
echo "I am a cat" | deepl -t ja
# 私は猫である
複数行を入力したいときは、この標準入力の機能を使えばOKです。
deepl -f ja
吾輩は猫である。
名前はまだない。
入力し終わったら CTRL + D
を入力してEOF
を送信します。
I am a cat.
I don't have a name yet.
利用できる言語のリストを表示したいときは、deepl -f
もしくは deepl -t
を入力します。
deepl -f | head
- BG Bulgarian
- CS Czech
- DA Danish
- DE German
- EL Greek
- EN English
- ES Spanish
- ET Estonian
- FI Finnish
- FR French
deepl -t | tail
- PT-BR Portuguese (Brazilian) true
- PT-PT Portuguese (European) true
- RO Romanian false
- RU Russian true
- SK Slovak false
- SL Slovenian false
- SV Swedish false
- TR Turkish false
- UK Ukrainian false
- ZH Chinese (simplified) false
また、deepl --usage
で、無料枠をどの程度使ったか確認することもできます。
deepl --usage
https://api-free.deepl.com/v2
character_count: 84
character_limit: 500000
おわりに
基本機能のみの簡単ツールですが便利に使うことができるかと思います。
ドキュメントの翻訳や、グロサリーなども実装されていないので機能拡張の余地はあります。PRを送ってくれたり、このツールをフォークして改良して独自のツールとしてメンテナンスしていただくのも大歓迎です。
この記事は以上です。