🇺🇸
Google Translate API で一括多言語翻訳の例
多言語対応で翻訳データを作るときはGoogle翻訳が便利ですが、言語と文言が増え続け、自分の意思とは関係ないところで文言が頻繁に変更になったりすると、翻訳作業で気が狂いそうになってきます。
そこで次のようなスクリプトを用意したところ一瞬でした。
require "bundler/inline"
gemfile do
source "https://rubygems.org"
gem "google-cloud-translate", "1.4.0"
end
API_KEY = "..."
source = {
:index => "一覧",
:show => "詳細",
:create => "作成",
:update => "更新",
:delete => "削除",
:confirm => "確認",
}
langs = [:en, :es, :de, :zh_cn]
gcloud = Google::Cloud.new
translate = gcloud.translate(API_KEY)
other = langs.inject({}) do |a, lang|
hv = source.inject({}) do |a, (key, text)|
text = translate.translate(text, from: :ja, to: lang).text
a.merge(key => text)
end
a.merge(lang => hv)
end
puts JSON.pretty_generate({ja: source, **other})
# >> {
# >> "ja": {
# >> "index": "一覧",
# >> "show": "詳細",
# >> "create": "作成",
# >> "update": "更新",
# >> "delete": "削除",
# >> "confirm": "確認"
# >> },
# >> "en": {
# >> "index": "list",
# >> "show": "detail",
# >> "create": "create",
# >> "update": "update",
# >> "delete": "delete",
# >> "confirm": "confirmation"
# >> },
# >> "es": {
# >> "index": "lista",
# >> "show": "detalle",
# >> "create": "crear",
# >> "update": "actualizar",
# >> "delete": "Eliminar",
# >> "confirm": "confirmación"
# >> },
# >> "de": {
# >> "index": "aufführen",
# >> "show": "Detail",
# >> "create": "schaffen",
# >> "update": "aktualisieren",
# >> "delete": "löschen",
# >> "confirm": "Bestätigung"
# >> },
# >> "zh_cn": {
# >> "index": "列表",
# >> "show": "细节",
# >> "create": "创造",
# >> "update": "更新",
# >> "delete": "删除",
# >> "confirm": "确认"
# >> }
# >> }
翻訳作業は最初から完全自動化がおすすめです。
Discussion