昨日、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.