0
Help us understand the problem. What are the problem?

posted at

updated at

Organization

DEEPL APIを使ってアプリやサービスを多言語対応しよう!

 はじめに

皆様は、自分のオリジナルサービス開発やアプリケーションの開発を行っていますでしょうか?

もちろん、自分のではなく会社でそういった業務に携わっていても構いません。

こういった開発を行っていて、英語や中国語といった言語。または他の言語に対応すればターゲットも広げることができて売り上げも上げれるのにと考えたことはないでしょうか?

これを正しく実施しようとすると、各言語の翻訳者を雇用したりして翻訳された文字情報を取り込む必要があります。

個人開発や予算の多くないプロジェクトでは、このようなコストを出すことができません。
それでも多言語対応するのであれば、方法は一つでしょう。

翻訳サービスを使う。

有名なところなら、グーグル翻訳でしょう。

グーグル翻訳にも外部向けにAPIが提供されておりそれを用いることで、翻訳結果を自動的に取集することも可能です。

しかし、使ったことがある方なら分かると思いますが、翻訳結果は・・・意味は理解できますがとても
自然な言語とは言えない結果になってしまうことが殆どです。

微妙なニュアンスが別の意味で置き換えられていたりなど・・・気になる点は多数あります。
(それでも昔よりは 圧倒的にマシなのですが)

さて、今回は最近翻訳精度が高いと噂の「DEEPL API」を使った翻訳とそれを使った多言語対応を提案します。

DEEPLとは?

DeepL翻訳は、2017年8月28日にサービスを開始した無償のニューラル機械翻訳サービスで、ドイツのケルンに本拠地を置く DeepL GmbH が開発した。Google 翻訳よりも精度が高く、微妙なニュアンスのある翻訳ができると肯定的な報道を受けている。
*ウィキペディア抜粋

プランについて

DEEPLには、様々なプランがあって、テキストファイルをアップロードし翻訳するものもありますが。
今回は、APIを用いることができる「開発者向け」を選択します。

・無料 1か月に‪500,000‬文字
・PRO~月630円+利用された範囲で課金

大きな違い:

PROでは、翻訳に用いられた文字列は、保存されず破棄されるとあります。
何らかの商業活動で用いるのなら、価格も安いですしPRO版でいいでしょう。

実際のところアプリ・またはサービスから動的に翻訳させるなどでないなら運用でカバーできますし
API経由である必要はないのですが、そこは一応エンジニア向け記事だからとなります。

手順

・アカウント登録しないとAPIを叩けないので登録行います(要クレジットカード
・翻訳する日本語文字列を用意する
・CURLコマンド経由で APIを実行し翻訳結果を取得する

これを、シェルスクリプトなどを書いて自動でアプリサービスで使う全ての文字を翻訳してもいいかと思います。

実行方法

とても簡単です。
ユーザー登録するとAPIを叩くためのKEYが入手できますので それを使ってCURLコマンド経由でAPIを叩くだけとなります。

動作確認

日本語から英語

curl https://api-free.deepl.com/v2/translate -d auth_key={**ここは貴方のキー**} -d "text=我思う、ゆえに我あり" -d "target_lang=en"

{"translations":[{"detected_source_language":"JA","text":"I think, therefore I am"}]}%

日本語から中国語

curl https://api-free.deepl.com/v2/translate -d auth_key={**ここは貴方のキー**} -d "text=我思う、ゆえに我あり" -d "target_lang=zh"

{"translations":[{"detected_source_language":"JA","text":"我想,所以我是”}]}

日本語からロシア語

curl https://api-free.deepl.com/v2/translate -d auth_key={**ここは貴方のキー**} -d "text=我思う、ゆえに我あり" -d "target_lang=ru”

"translations":[{"detected_source_language":"JA","text":"Я думаю, поэтому я есть"}]}

レスポンスは、JSON文字列で返却されてきます。
Textプロパティに翻訳結果が格納されていますので、それを抽出すれば良さそうですね!

JSON文字列の展開は、jqコマンドが便利なので 下記サンプルでは jqコマンドをインストール
し利用しています。

curl https://api-free.deepl.com/v2/translate -d auth_key={**ここは貴方のキー**} -d "text=我思う、ゆえに我あり" -d "target_lang=en" | jq -r ‘.translations[0].text’

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   184  100    85  100    99     58     67  0:00:01  0:00:01 --:--:--   126
I think, therefore I am

挙動は確認できたので、あとはプロジェクトで使う言語文字列リストのフォーマットになるよう
変換していくだけです。

まとめ

アプリ・サービスで使う言語ファイルをコード直書きではなく外部ファイルにおいて言語指定して
呼び出す仕組みにしておいて多言語対応がやりやすい形にはしておく必要がありますが。

あくまで、個人・低予算プロジェクトの際にDEEPL翻訳を用いて行えば
最低限のクオリティは担保したものをお客様に提供できつつ、機会損失を逃すことがなくなりそうですね!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
0
Help us understand the problem. What are the problem?