標準の翻訳ワークフローは、プレイヤーによってどれだけ頻繁に表示されるかに基づいて、ゲーム内の文字列を検出し、それらを翻訳のためにローカリゼーションテーブルに追加します。珍しい文字列やプレイ中に生成される文字列(動的に生成されたテキストやプレイヤーによって作成されたテキストなど)は見逃されることがあります。translate text APIを使用すると、これらの文字列のリアルタイム翻訳を生成でき、ゲームが完全にローカライズされます。
プレイヤーの言語にテキストを翻訳する
プレイヤーの言語にテキストを翻訳するには、彼らの Player.LocaleId をターゲット言語コードとして渡します。以下は、クライアントスクリプト内でプレイヤーのロケールIDを取得し、それを ServerScriptService 内の Script に渡して翻訳リクエストを行う方法の例です。
- 翻訳APIは Open Cloud API であり、そのためリクエストを行うために パス が必要です。この場合、ゲームタイルのオーバーフローメニューにあるユニバースIDが必要です。Creator Hub で確認できます。
- ゲーム内には Open Cloudクライアントパッケージ も含める必要があります。サーバースクリプトでそれが必要です。
クライアントスクリプトlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local httpRequestFunction = ReplicatedStorage:WaitForChild("TranslateTextFunction")-- 翻訳するテキストlocal textToTranslate = "これは翻訳するための例文です"-- プレイヤーのロケールを取得local Players = game:GetService("Players")local player = Players.LocalPlayer-- ローカルプレイヤーのロケールに対してロケールIDを取得、または任意のサポートされているロケール文字列に設定local locale = player.LocaleIdlocal translatedText = httpRequestFunction:InvokeServer(textToTranslate, locale)print("翻訳されたテキスト: ", 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>
-- RemoteFunctionを作成
local remoteFunction = Instance.new("RemoteFunction")
remoteFunction.Name = "TranslateTextFunction"
remoteFunction.Parent = ReplicatedStorage
remoteFunction.OnServerInvoke = function(player, text, locale, uni)
print(player.Name .. " がテキストの翻訳をリクエストしました: " .. text .. " をロケール: " .. 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] -- translations[locale] に翻訳されたテキストが含まれていると仮定
else
return "エラー: " .. result.Error.message
end
end
テスト
リアルタイム翻訳APIは現在、RCC認証のみをサポートしています。そのため、StudioからAPIをテストするには、コードをテストインスタンスにデプロイする必要があります。共同テストを使用してスクリプトをテストインスタンスにデプロイし、変更をテストしてください。
翻訳APIリファレンス
APIリクエストパラメータ
| パラメータ名 | タイプ | 説明 |
|---|---|---|
| path | string | ユニバースのパス。必須。 |
| text | string | 翻訳するテキスト。必須。 |
| source_language_code | string | 入力テキストの言語を表すIETF BCP-47言語コード。指定しない場合、システムが自動的にソース言語を検出します。 |
| target_language_codes | Array<string> | 翻訳のためのIETF BCP-47形式のターゲット言語コードのリスト。 |
APIレスポンスフィールド
| フィールド名 | タイプ | 説明 |
|---|---|---|
| source_language_code | string | 検出されたまたはユーザー指定のソーステキストの言語を表すIETF BCP-47言語コード。 |
| translations | Dictionary<string, string> | 要求された翻訳を含むマップ。キーはIETF BCP-47言語コード、値はその言語の翻訳されたテキスト。マップにはすべての要求された翻訳が含まれます。ソーステキストがフィルタリングされた場合、このマップは空になります。 |
制限事項
Robloxは、ゲーム内のプレイヤー数に基づいてこのAPIへのリクエストを制限するために次の式を使用します:
ゲームごとの最大リクエスト数(1分あたり) = 600 + (1.5 * 同時ユーザー数)
また、すべてのOpen Cloud APIに対して、ゲームサーバーごとの1分あたりの合計リクエスト数は150に制限されています。
サポートされている言語
リアルタイム翻訳APIは現在、以下の言語をサポートしており、これは 自動翻訳用のサポート言語 とはわずかに異なります。
| 言語 | 言語コード |
|---|---|
| 中国語(簡体字) | zh-cn |
| 中国語(繁体字) | zh-tw |
| 英語 | en-us |
| フランス語 | fr-fr |
| ドイツ語 | de-de |
| インドネシア語 | id-id |
| イタリア語 | it-it |
| 日本語 | ja-jp |
| 韓国語 | ko-kr |
| ポーランド語 | pl-pl |
| ポルトガル語 | pt-br |
| ロシア語 | ru-ru |
| スペイン語 | es-es |
| タイ語 | th-th |
| トルコ語 | tr-tr |
| ベトナム語 | vi-vn |