Der standardmäßige Übersetzungsworkflow erkennt Strings in Ihrem Spiel basierend darauf, wie häufig sie von Spielern angezeigt werden und fügt sie Ihrer Lokalisierungstabelle zur Übersetzung hinzu. Es könnte ungewöhnliche Strings und/oder während des Spiels generierte Strings übersehen, wie zum Beispiel dynamisch generierte Texte oder von Spielern erstellte Texte. Sie können die Übersetzungstext-API verwenden, um diese Strings in Echtzeit zu übersetzen und sicherzustellen, dass Ihr Spiel vollständig lokalisiert ist.
Text in die Sprache eines Spielers übersetzen
Um Text in die Sprache eines Spielers zu übersetzen, übergeben Sie deren Player.LocaleId als Zielsprachen-Code. Im Folgenden finden Sie ein Beispiel, wie Sie die Locale-ID des Spielers in einem Clientskript erhalten und dann an ein Script in ServerScriptService übergeben, um die Übersetzungsanfrage zu stellen.
- Die Übersetzungs-API ist eine Open Cloud API, was bedeutet, dass Sie einen Pfad benötigen, um eine Anfrage zu stellen. In diesem Fall benötigen Sie die Universums-ID, die im Überlaufmenü des Spielkachels im Creator Hub zu finden ist.
- Sie müssen auch das Open Cloud-Clientpaket in Ihrem Spiel einfügen; das Serverskript benötigt es.
Client-Skriptlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local httpRequestFunction = ReplicatedStorage:WaitForChild("TranslateTextFunction")-- Zu übersetzender Textlocal textToTranslate = "Dies ist der Beispieltext zur Übersetzung"-- Die Locale des Spielers abrufenlocal Players = game:GetService("Players")local player = Players.LocalPlayer-- erhalten Sie die Locale-ID für die Locale des lokalen Spielers oder setzen Sie sie auf eine unterstützte Locale-Zeichenfolgelocal locale = player.LocaleIdlocal translatedText = httpRequestFunction:InvokeServer(textToTranslate, locale)print("Übersetzter Text: ", translatedText)
Server-Skript in ServerScriptService
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ServerScriptService = game:GetService("ServerScriptService")
local oc = require(ServerScriptService.OpenCloud.V2)
-- Finden Sie es unter https://create.roblox.com/dashboard/creations im Überlaufmenü eines Spielkachels
local universeID = <your_universe_id>
-- RemoteFunction erstellen
local remoteFunction = Instance.new("RemoteFunction")
remoteFunction.Name = "TranslateTextFunction"
remoteFunction.Parent = ReplicatedStorage
remoteFunction.OnServerInvoke = function(player, text, locale, uni)
print(player.Name .. " hat die Übersetzung für den Text angefordert: " .. text .. " zur Locale: " .. locale)
-- Bereiten Sie die Übersetzungsanfrage vor
local request : oc.TranslateTextRequest = {
path = oc:UniversePath(universeID),
text = text,
-- Zielsprachen-Codes unterstützen eine Liste von mehreren Locales, in die übersetzt werden soll.
-- Hier übergeben wir nur eine Sprache:
-- Die Spieler-Locale, die im lokalen Skript abgerufen wurde
target_language_codes = {locale}
}
local result = oc:TranslateText(request)
if result.Error == nil then
return result.Response.translations[locale] -- Vorausgesetzt, translations[locale] enthält den übersetzten Text
else
return "Fehler: " .. result.Error.message
end
end
Testen
Die Echtzeitübersetzungs-API unterstützt derzeit nur RCC-Authentifizierung. Daher müssen Sie Ihren Code in einer Testinstanz bereitstellen, um die API aus Studio zu testen. Verwenden Sie kollaboratives Testen, um das Skript in einer Testinstanz bereitzustellen und Ihre Änderungen zu testen.
Übersetzungs-API-Referenz
API-Anfrageparameter
| Parametername | Typ | Beschreibung |
|---|---|---|
| path | string | Der Pfad des Universums. Erforderlich. |
| text | string | Der zu übersetzende Text. Erforderlich. |
| source_language_code | string | Der IETF BCP-47 Sprachcode, der die Sprache des Eingabetexts darstellt. Wenn nicht angegeben, erkennt das System automatisch die Quellsprache. |
| target_language_codes | Array<string> | Eine Liste von Zielsprachen-Codes im IETF BCP-47-Format für die Übersetzung. |
API-Antwortfelder
| Feldname | Typ | Beschreibung |
|---|---|---|
| source_language_code | string | Der IETF BCP-47 Sprachcode, der die erkannte oder benutzerspezifizierte Sprache des Quelltextes darstellt. |
| translations | Dictionary<string, string> | Eine Karte, die die angeforderten Übersetzungen enthält. Der Schlüssel ist der IETF BCP-47 Sprachcode und der Wert ist der übersetzte Text für diese Sprache. Die Karte enthält alle angeforderten Übersetzungen. Wenn der Quelltext gefiltert wurde, ist diese Karte leer. |
Grenzen
Roblox verwendet die folgende Formel, um Anfragen für diese API basierend auf der Anzahl der Spieler in Ihrem Spiel zu drosseln:
max Anfragen pro Minute pro Spiel = 600 + (1.5 * Anzahl_der_gleichzeitigen_Nutzer)
Es gibt auch ein kombiniertes Limit von 150 Anfragen pro Minute pro Spielserver für alle Open Cloud APIs.
Unterstützte Sprachen
Die Echtzeitübersetzungs-API unterstützt derzeit die folgenden Sprachen, die sich geringfügig von den unterstützten Sprachen für automatische Übersetzungen unterscheiden.
| Sprache | Sprachcode |
|---|---|
| Chinesisch (Vereinfacht) | zh-cn |
| Chinesisch (Traditionell) | zh-tw |
| Englisch | en-us |
| Französisch | fr-fr |
| Deutsch | de-de |
| Indonesisch | id-id |
| Italienisch | it-it |
| Japanisch | ja-jp |
| Koreanisch | ko-kr |
| Polnisch | pl-pl |
| Portugiesisch | pt-br |
| Russisch | ru-ru |
| Spanisch | es-es |
| Thailändisch | th-th |
| Türkisch | tr-tr |
| Vietnamesisch | vi-vn |