動的コンテンツを自動的に翻訳する

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

標準の翻訳ワークフローは、プレイヤーによってどの程度頻繁に表示されるかに基づいて、エクスペリエンス内の文字列を検出し、翻訳用のローカライゼーションテーブルに追加します。ゲームプレイ中に生成された珍しい文字列や/およびプレイヤーによって作成されたテキストなど、動的に生成されたテキストやプレイヤーによって作成されたテキストを見逃す可能性があります。翻訳テキスト API を使用して、リアルタイムでこれらの文字列の翻訳を生成し、エクスペリエンスが完全にローカライズされるようにできます。

テキストをプレイヤーの言語に翻訳

テキストをプレイヤーの言語に翻訳するには、ターゲット言語コードとして Player.LocaleId をパスします。以下は、クライアントスクリプトでプレイヤーのローカルIDを取得し、それを ScriptServerScriptService して翻訳リクエストを作成する方法の例です。

客側スクリプト

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local httpRequestFunction = ReplicatedStorage:WaitForChild("TranslateTextFunction")
-- 翻訳するテキスト
local textToTranslate = "This is the example text to translate"
-- プレイヤーのローカルを取得
local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- ローカルプレイヤーのローカルに対するローカルIDを取得するか、サポートされるローカル文字列に設定
local locale = player.LocaleId
local translatedText = httpRequestFunction:InvokeServer(textToTranslate, locale)
print("Translated text: ", translatedText)
ServerScriptService のサーバースクリプト

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ServerScriptService = game:GetService("ServerScriptService")
local oc = require(ServerScriptService.OpenCloud.V2)
-- エクスペリエンスタイルのオーバーフローメニューで https://create.roblox.com/dashboard/creations を見つける
local universeID = <your_universe_id>
-- リモート関数を作成する
local remoteFunction = Instance.new("RemoteFunction")
remoteFunction.Name = "TranslateTextFunction"
remoteFunction.Parent = ReplicatedStorage
remoteFunction.OnServerInvoke = function(player, text, locale, uni)
print(player.Name .. " requested translation for text: " .. text .. " to locale: " .. locale)
-- 翻訳リクエストを準備する
local request : oc.TranslateTextRequest = {
path = oc:UniversePath(universeID),
text = text,
-- ターゲット言語コードは、翻訳する複数のローカルをリストします。
-- ここでは、1つの言語だけをパスしています:
--ローカルスクリプトで取得されたプレイヤーローカル
target_language_codes = {locale}
}
local result = oc:TranslateText(request)
if result.Error == nil then
return result.Response.translations[locale] -- 翻訳[locale]に翻訳されたテキストが含まれていると仮定する
else
return "Error: " .. result.Error.message
end
end

テスト中

リアルタイム翻訳 API は現在、RCC 認証のみをサポートしています。結果として、Studio から API をテストするには、テストインスタンスにコードを配置する必要があります。チームテスト を使用して、スクリプトをテストインスタンスに展開し、変更をテストします。

翻訳 API 参照

API リクエストパラメータ

引数名種別説明
通路文字列宇宙のパス。必要。
文字 text文字列翻訳されるテキスト。必須です。
源_言語_コード文字列入力テキストの言語を表す IETF BCP-47 言語コード。提供されない場合、システムは自動的にソース言語を検出します。
ターゲット_言語_コードArray<string>翻訳のための IETF BCP-47 形式のターゲット言語コードのリスト。

API 返答フィールド

フィールド名種別説明
源_言語_コード文字列ソーステキストの検出またはユーザー指定の言語を表す IETF BCP-47 言語コード。
翻訳Dictionary<string, string>要求された翻訳を含むマップ。キーは IETF BCP-47 言語コードで、値はその言語の翻訳されたテキストです。マップにはリクエストされたすべての翻訳が含まれます。ソーステキストがフィルタリングされた場合、このマップは空です。

制限

Roblox は、エクスペリエンスのプレイヤー数に基づいて、この API のリクエストを制限するための次の式を使用します:

max requests per minute per experience = 600 + (1.5 * number_of_concurrent_users)

すべてのオープンクラウド API のゲームサーバーに対して、分ごとの合計制限が 150 リクエスト、毎分あります。

対応言語

リアルタイム翻訳 API は現在、自動翻訳にサポートされている言語 とは若干異なる次の言語をサポートしています。

言語言語コード
中国語(簡体字)zh-cn
中国語(伝統)zh-tw
英語en-us
フランス語fr-fr
ドイツ語デ-デ
インドネシア語id-id
イタリア語それ-それ
日本語ja-jp
韓国語ko-kr
ポーランド語pl-pl
ポルトガル語pt-br
ロシア語るーる
スペイン語es-es
タイ語th-th
トルコ語tr-tr
ベトナム語vi-vn