Google 翻訳に変わる翻訳アプリとして有名な DeepL 翻訳だが、API が無料で使える事を知ったのでさっそく使ってみる事にした。
上記 DeepL のページよりアカウントを作成し、無料プランで登録を行う。その際、無料版であっても重複登録を防ぐためにクレジットカードの登録を求められる。
DeepL API を利用する方法
API KEY を入手したら Curl で動作確認してみる。
$ curl -X POST 'https://api-free.deepl.com/v2/translate' \
-H 'Authorization: DeepL-Auth-Key YOUR_API_KEY' \
-d 'text=This is a pen.' \
-d 'target_lang=JA'
{"translations":[{"detected_source_language":"EN","text":"これはペンだ。"}]}
このように翻訳結果が表示されたら OK だ。
DeepL API を Ruby で利用する方法
動作確認が取れたので Ruby で利用する。Ruby では deepl-rb gem を利用すれば簡単に API にアクセスできる。
GitHub - wikiti/deepl-rb: A simple ruby gem for the DeepL API
gem install もしくは Gemfile に記述して bundle install を行おう。
$ gem install deepl-rb
Gemfile に記述する場合は以下のような感じ。
gem 'deepl-rb', require: 'deepl'
gem をインストールできたらコードを書こう。
まずは API にアクセスするための設定を記述する。
require 'deepl'
DeepL.configure do |config|
config.auth_key = ENV['DEEPL_AUTH_KEY']
config.host = 'https://api-free.deepl.com'
end
API キーはコード内に直接書いても問題ないが、セキュリティ的には環境変数に登録するのが良いかもしれない。また、API のエンドポイントは無料版と有料版で違うようなので、指定する。
準備できたら早速翻訳しよう。単に文字列を翻訳するだけなら DeepL.translate を利用する。
translation = DeepL.translate 'This is a pen', nil, 'JA'
puts 'DeepL.translate.text'
puts translation.text
puts 'DeepL.translate.detected_source_languag'
puts translation.detected_source_language
一つ目の引数に翻訳したい文章を、二つ目にその言語(自動検出する場合はnil)、三つ目に翻訳先の言語コードを入力する。
出力は以下のような感じ。
DeepL.translate.text
これはペン
DeepL.translate.detected_source_languag
EN
とても簡単に利用できる。
DeepL API で利用できる言語の確認方法
利用できる言語は以下のメソッドで確認できる。
puts 'DeepL.languages(type: :source)'
puts DeepL.languages(type: :source)
puts 'DeepL.languages(type: :target)'
puts DeepL.languages(type: :target)
言語リストは現時点では以下の通りだ。
DeepL.languages(type: :source)
BG - Bulgarian
CS - Czech
DA - Danish
DE - German
EL - Greek
EN - English
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 - Portuguese
RO - Romanian
RU - Russian
SK - Slovak
SL - Slovenian
SV - Swedish
TR - Turkish
UK - Ukrainian
ZH - Chinese
DeepL.languages(type: :target)
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)
おそらく Web 上で利用できるものと変わらないと思う。ヨーロッパ系の言語+日中韓インドネシアという感じ。target 側は英語とポルトガル語に関しては複数種類定義されているが、source 側は共通のようだ。
DeepL API の利用状況の確認方法
API の利用状況については Web から確認できるだけでなく、API からも取得できる。
usage = DeepL.usage
puts 'DeepL.usage.character_count'
puts usage.character_count
puts 'DeepL.usage.character_limit'
puts usage.character_limit
DeepL.usage.character_count
58
DeepL.usage.character_limit
500000
無料版では一か月に50万文字という制限がある。超える場合には有料版を利用しよう。
DeepL API の注意点
注意点だが、DeepL に無料版でログインしていると Web 版の翻訳が利用できない。
何故かはわからないがログアウトなどすれば利用できる。
コメント