Google が提供している 翻訳API の Cloud Translation API を使う機会があったので、ポイントをメモしておく。
変換方法
詳細はリファレンスをみよう。
https://cloud.google.com/translate/docs/reference/rest
ざっくり書いておくと
POST https://translation.googleapis.com/language/translate/v2/
を投げる。その際に Body に次のような JSON を指定する。
{
"q": "hello",
"target": "ja",
"format": "text"
}
すると次のような JSON が返ってくる
{
"data": {
"translations": [
{
"translatedText": "こんにちは",
"detectedSourceLanguage": "en"
}
]
}
}
GETでやるときはURLエンコードが必須
POST じゃなくて GET で流すことも可能。
その場合は、URLエンコードをしないとちゃんと変換されないので注意。
https://translation.googleapis.com/language/translate/v2/?target=en&q=Je%20suis%20ravi(e)%20de%20vous%20rencontrer
{
"data": {
"translations": [
{
"translatedText": "Nice to meet you",
"detectedSourceLanguage": "fr"
}
]
}
}
2種類の翻訳
デフォルトでは、ニューラル機械翻訳(NMT)モデルで翻訳される。
リクエストした言語の組み合わせが NMT モデルでサポートされていない場合、フレーズベース機械翻訳(PBMT)モデルが使用される。
明示的に指定することも可能
"model": "nmt"
"model": "base"
言語のサポート
変わるだろうからこれはリファレンスを都度見たほうが良い
https://cloud.google.com/translate/docs/languages
価格
Google Translation API の料金は使用量に基づいて月ごとに請求されます。翻訳の使用量は 100 万文字(1,000,000文字)単位で計算されます。
翻訳 20 ドル/100 万文字
言語の検出 20 ドル/100 万文字
ただし100万文字にみたない場合、20ドルかかるわけじゃなくてちゃんと使った分だけになる。
文字数
文字がマルチバイトでも 1 文字ごとに課金される。
こんにちは
は 5 文字ということ。
翻訳を POST のリクエストにすれば 日本語で 30,000文字
くらいは一回のリクエストでいける。
あまりにも多いとエラーになると思う。
HTMLの場合の文字数
翻訳対象はformat
で指定できるのだが、通常の text
と html
がある。
html
の場合、タグ等の部分も文字数としてカウントされるのでtext
のほうが安くすむ。
特定の文字列を変換対象外にする
HTML を変換する場合は、<span class="notranslate">hello</span>
のように囲うことで変換対象外に出来る。
割り当て
Daily Limit は 50,000,000
文字まで増やせる。
それ以上は、増加の申込みをしないといけない。
秒間制限は user
だけでなく project
にもあるので、システム用のサービスアカウントを作って使う、で良いと思う。
その他
FAQ があるからこれは必読。
https://cloud.google.com/translate/faq