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

1 min read読了の目安(約1100字 2

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)
}