dptran.webp

昨日、crates.io にて、コマンドライン上で DeepL API による翻訳が可能な CLI ツール「dptran」を公開しました。

https://crates.io/crates/dptran

DeepL API を利用しますので、利用には各自 DeepL API の API キーが必要になりますが、フリープランでも月 50 万文字までの翻訳が可能です。

インストール方法

dptran は Rust のパッケージマネージャ「cargo」で crate として配布しています。インストールには事前に rustup または cargo のインストールが必要です。

$cargo install dptran

概要

実は当ブログでも一度言及していたツールで、去年の4月に開発を始めました。

C++でDeepL APIを使ってコマンドラインから翻訳するツールを作っ(てい)た | 為せばnull

一度 C++ から Rust への移植を経て、しばらくは自分専用ツールとして使っていました。実際の開発期間は3〜4ヶ月程度だと思います。いつかは正式版として公開をと思っていましたが、後回しにしてしまい…ある程度のテスト期間を設け、もうデバッグは十分だろうと判断しこのタイミングでの公開となりました。

DeepL API を利用した CLI ツールは既にいくつかありますが、dptran の特長としては

  • 言語コードを翻訳時に逐一指定できる(もちろんデフォルトの言語も設定できる)

  • 残り翻訳可能文字数を確認できる

  • 翻訳可能な言語の一覧を取得できる

  • 簡単に設定変更できる(設定ファイルを手動で弄る必要はない)

  • 対話モードの他に、複数行の一括翻訳に対応している

  • Rust で書かれている(ゆえにメモリ安全性が保証され、GC が不要)

…といったところでしょうか。

機能

API キーの設定

ご利用前に API キーの設定が必要になります。

$dptran set --api-key <YOUR API KEY>

通常翻訳モード

コマンドライン引数に直接原文の文字列を入力して翻訳するモードです。

$dptran "Hello World"
ハロー・ワールド

-t で翻訳先の言語を、-f で翻訳元の言語を指定することもできます。指定の際には言語コード(英語ならEN、日本語ならJA、フランス語ならFR、など)で指定します。

$dptran "Hello World" -t FR
Bonjour le monde

利用可能な言語コードの確認には list サブコマンドを利用します。list -t で翻訳先として指定可能な言語コードの一覧を、list -f で翻訳元の言語として指定可能な言語コードの一覧を表示できます。

$dptran list -t
Target languages:
 BG     : Bulgarian                CS     : Czech
 DA     : Danish                   DE     : German
 EL     : Greek                    EN-GB  : English (British)
 EN-US  : English (American)       ES     : Spanish
 ET     : Estonian                 FI     : Finnish
 FR     : French                   HU     : Hungarian
 ID     : Indonesian               IT     : Italian
 JA     : Japanese                 KO     : Korean
 LT     : Lithuanian               LV     : Latvian
 NB     : Norwegian                NL     : Dutch
 PL     : Polish                   PT-BR  : Portuguese (Brazilian)
 PT-PT  : Portuguese (European)    RO     : Romanian
 RU     : Russian                  SK     : Slovak
 SL     : Slovenian                SV     : Swedish
 TR     : Turkish                  UK     : Ukrainian
 ZH     : Chinese (simplified)     EN     : English
 PT     : Portuguese

対話モード

対話型の入力が可能なモードです。つまり複数回の入力が可能で、文字列を一度入力するごとに翻訳を実行します。

対話モードに入るには、コマンドライン引数に原文を入力せずに dptran を実行します。このとき、翻訳元・翻訳先言語を指定する場合は言語コードのみコマンドライン引数で指定します。

$dptran -t EN
Now translating from detected language to EN-US.
Type "quit" to exit dptran.
> 男もすなる日記といふものを、女もしてみむとてするなり。それの年のしはすの二十日あまり一日の、戌の時に門出す。そのよしいさゝかものにかきつく。
The diary, which men also keep, is something that women also try to do. On the first day of the twentieth month of the year, at the time of the dog. The diary is written in a beautiful style.
> dptranは、コマンドライン上でのDeepL APIの利用を実現するRustで書かれたCLIツールです。
dptran is a CLI tool written in Rust that enables the use of the DeepL API on the command line
> quit

終了の際には “quit” と入力します。

マルチラインモード (multilines)

複数行の入力を一度に翻訳します。こちらもベースは対話モードで、複数回の入力が可能です。マルチラインモードを利用するには -m オプションを指定します。

$dptran -m
Now translating from detected language to JA.
Multiline mode: Enter a blank line to send the input.
Type "quit" to exit dptran.
> A tool to run DeepL translations on your command line.
..It's written in Rust, and uses curl to connect to the DeepL API.
..To use, you need to get the DeepL API key from https://www.deepl.com/ja/pro-api/.

..コマンドラインでDeepL翻訳を実行するツール。
これはRustで記述されており、DeepL APIへの接続にはcurlを使用します。
使用するには、https://www.deepl.com/ja/pro-api/ から DeepL API キーを取得する必要があります。
> quit

対話モードと同様に、終了の際には “quit” と入力します。

残り文字数の確認 (usage)

利用中の DeepL API に残された翻訳可能な文字数を確認します。-u オプションを指定します。

$dptran -u
usage: 32453 / 500000 (6%)
remaining: 467547

ヘルプ (help)

オプションの確認などを行います。-h オプションを指定します。

$dptran -h
A tool to run DeepL translations on command line written by Rust.

Usage: dptran [OPTIONS] [SOURCE_TEXT]... [COMMAND]

Commands:
  set   Settings
  list  Show list of supperted languages
  help  Print this message or the help of the given subcommand(s)

Arguments:
  [SOURCE_TEXT]...  Source text

Options:
  -f, --from <FROM>  Set source language
  -t, --to <TO>      Set target language
  -m, --multilines   Input multiple lines
  -u, --usage        Print usage of DeepL API
  -h, --help         Print help
  -V, --version      Print version

ヘルプは各サブコマンド(set など)に対しても利用可能です。

$dptran set -h
Settings

Usage: dptran set <--api-key <API_KEY>|--target-lang <TARGET_LANG>|--display|--clear>

Options:
  -a, --api-key <API_KEY>          Set api-key
  -t, --target-lang <TARGET_LANG>  Set default target language
  -d, --display                    Display settings
  -c, --clear                      Clear settings
  -h, --help                       Print help

今後の予定

まずは crates.io 以外での配布(バイナリでの配布)を検討しています。

今後も機能は追加していきたいと考えており、例えばファイルからの読み取りや、余分な改行・タブ・スペースを無視した複数行翻訳といった機能をソフトウェア側で対応させたいと思っております。

リポジトリ

GitHub - yotiosoft/dptran: A tool to run DeepL translations on command line written by Rust.