開発環境
ruby '2.6.3'
rails '6.0.2'
Google Cloud Translation APIとは
- ウェブサイトやアプリを 100 以上の言語に瞬時に翻訳したい場合などに役立つのが Translation API です。
Translation API の料金
- Translation API の料金
-
Google Cloud の無料枠
私の場合は12 か月間の無料トライアル(Google Cloud サービスで使用できる $300 相当のクレジット付き)。
なので無料です。
導入手順
Cloud Translate API の有効化
-
APIとサービスを有効化を押す
Cloud Translate API
を検索→有効化
サービスアカウントキーの作成
サービスカウント: 「新しいサービスアカウント」を選択
サービスアカウント名: (任意)
役割: オーナー (Project > オーナー)
サービスアカウントID: (任意)
キーのタイプ: JSON
「作成」ボタンを押下すると、jsonファイルがダウンロードされます
サービスアカウントキーの適用,環境変数の設定
- GOOGLE_APPLICATION_CREDENTIALSという名前の環境変数を作成し、先ほどダウンロードしたjsonファイルのパスを設定します。
ターミナル
vim .zshrc
.zshrc
export GOOGLE_APPLICATION_CREDENTIALS="ダウンロードしたファイルパス"
- .zshrcの更新。
ターミナル
source ~/.zshrc
これでいつでもローカル環境では参照できるようになります。
保存されているか確認
ターミナル
printenv | grep GOOGLE
=> export GOOGLE_APPLICATION_CREDENTIALS="ダウンロードしたファイルパス"
docker上でGOOGLE_APPLICATION_CREDENTIALSを適応
- 開発中のディレクトリにjsonファイルをコピーする。(ファイル名は変更しても問題ありません、今回はkey.jsonという名前で行います。)
- .gitignoreに追記する
.gitignore
/key.json
- DockerfileでDocker内にコピーする
Dockerfile
COPY key.json key.json
ENV GOOGLE_APPLICATION_CREDENTIALS key.json
そしてdocker-compose build
rails編
- gem導入
gem 'google-cloud-translate'
- 私の場合は外部DBから取ってきた英文を日本語にして保存する感じなので下記を変えればいい感じですが。実際にviewから翻訳したい場合はリンクを参照してください。
seeds.rb
# 最初に作ったプロジェクトのIDです。そのまま書くのはあまりよろしくないです。
project_id = "Your Google Cloud project ID"
# 実際に訳す文です
text = "The text you would like to translate"
# 何に訳すかを指定します `"The ISO 639-1 code of language to translate to, eg. 'en'"`
language_code = "en"
require "google/cloud/translate"
translate = Google::Cloud::Translate.new version: :v2, project_id: project_id
translation = translate.translate text, to: language_code
puts "Translated '#{text}' to '#{translation.text.inspect}'"
puts "Original language: #{translation.from} translated to: #{translation.to}"
私の場合
require "google/cloud/translate"
def translate(synopsis:)
project_id = Rails.application.credentials.api[:id]
text = synopsis
language_code = 'ja'
translate = Google::Cloud::Translate.new version: :v2, project_id: project_id
translation = translate.translate text, to: language_code
return translation.text.inspect
end
最後に
今回は(v2)のGoogle Translation APIということをお忘れなく。
おしまい