開発したアプリなど一覧

DeepL API を Ruby で利用し翻訳する方法

アフィリエイトリンクを含む場合があります

Google 翻訳に変わる翻訳アプリとして有名な DeepL 翻訳だが、API が無料で使える事を知ったのでさっそく使ってみる事にした。

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 版の翻訳が利用できない。

何故かはわからないがログアウトなどすれば利用できる。

Sponsored Link

コメント

タイトルとURLをコピーしました