🐥

DeeplをCLI上で実行するアプリを作った

2021/06/05に公開4

DeeplをCLI上で実行するアプリ

使い方

リリースページからダウンロードするかリポジトリをクローンしてビルドしてください。

ダウンロードした(or ビルドした)ファイルをPATHの通っているディレクトリにおいてください。
$HOME/.local/bin/以下に置く場合は

$ cp path/to/deepl-translation $HOME/.local/bin/

deeplのAPIを叩く都合上、アクセストークンが必要なのでdeeplの無料プランに登録してください。

アクセストークンは環境変数DEEPL_TOKENに登録してください。

bash
export DEEPL_TOKEN=<YOUR TOKEN>

翻訳元の言語や翻訳先言語は$HOME/.config/deepl-translation/setting.jsonにデフォルト値を設定することができます。

setting.json
{
    "source_lang": "EN",
    "target_lang": "JA"
}

このファイルが存在しないときにdeepl-translationコマンドを実行すると値が空の設定ファイルが生成されます。

コマンドはファイル入力と標準入力を受け付けます。
標準入力を使う場合は--stdinオプションをつけてください。

$ deepl-translation text.txt

翻訳後のデータは標準出力に書き出されるのでリダイレクト等で保存してください。

一時的に翻訳元・翻訳先言語を変えたいときは-s(--source_lang),-t(--target_lang)オプションが使用できます。

開発を通じて得た知見

  • 標準入力でパイプとそうでないときの切り替え
    terminal.IsTernimal(syscall.Stdin)で判断できる。
if terminal.IsTerminal(syscall.Stdin) {
    // is not pipe
    fmt.Scan(&rawSentense)
} else {
    // is pipe
    pipeIn, err := ioutil.ReadAll(os.Stdin)
    if err != nil {
        return err
    }
    rawSentense = string(pipeIn)
}

Discussion

eggplantseggplants

この記事を執筆された後に、公式がCLIを公開しました。
https://github.com/DeepLcom/deepl-python
Python実装ですが…

pip install deepl
deepl --auth-key <YOUR_AUTH_KEY> text --to DE "Text to be translated."
deepl --auth-key <YOUR_AUTH_KEY> document --to DE text.txt
OmochiceOmochice

情報ありがとうございます!
公式がPython実装なのでgoで実行バイナリにできるメリットまだ残ってるかなーと思ってます。
時間ができたらソースを読んでみたいと思います。