Il flusso di lavoro standard per la traduzione rileva le stringhe nel tuo gioco in base a quante volte vengono visualizzate dai giocatori e le aggiunge alla tua tabella di localizzazione per la traduzione. Potrebbe perdere stringhe rare e/o stringhe generate durante il gioco, come il testo generato dinamicamente o il testo creato dai giocatori. Puoi utilizzare l'API di traduzione del testo per generare traduzioni per queste stringhe in tempo reale, assicurandoti che il tuo gioco sia completamente localizzato.
Traduci il testo nella lingua di un giocatore
Per tradurre il testo nella lingua di un giocatore, passa il loro Player.LocaleId come codice della lingua di destinazione. Di seguito è riportato un esempio di come puoi ottenere l'ID locale del giocatore in uno script client e poi passarlo a uno Script in ServerScriptService per effettuare la richiesta di traduzione.
- L'API di traduzione è un Open Cloud API, il che significa che hai bisogno di un percorso per effettuare una richiesta. In questo caso, hai bisogno dell'ID dell'universo, che può essere trovato nel menu a discesa della miniatura del gioco nel Creator Hub.
- Devi anche includere il pacchetto client di Open Cloud nel tuo gioco; lo script del server lo richiede.
Script clientlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local httpRequestFunction = ReplicatedStorage:WaitForChild("TranslateTextFunction")-- Testo da tradurrelocal textToTranslate = "Questo è il testo di esempio da tradurre"-- Ottieni la lingua del giocatorelocal Players = game:GetService("Players")local player = Players.LocalPlayer-- ottieni l'ID locale per la lingua locale del giocatore o impostalo su qualsiasi stringa di lingua supportatalocal locale = player.LocaleIdlocal translatedText = httpRequestFunction:InvokeServer(textToTranslate, locale)print("Testo tradotto: ", translatedText)
Script del server in ServerScriptService
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ServerScriptService = game:GetService("ServerScriptService")
local oc = require(ServerScriptService.OpenCloud.V2)
-- Trova su https://create.roblox.com/dashboard/creations nel menu a discesa di una miniatura di gioco
local universeID = <your_universe_id>
-- Crea RemoteFunction
local remoteFunction = Instance.new("RemoteFunction")
remoteFunction.Name = "TranslateTextFunction"
remoteFunction.Parent = ReplicatedStorage
remoteFunction.OnServerInvoke = function(player, text, locale, uni)
print(player.Name .. " ha richiesto la traduzione per il testo: " .. text .. " nella lingua: " .. locale)
-- Prepara la richiesta di traduzione
local request : oc.TranslateTextRequest = {
path = oc:UniversePath(universeID),
text = text,
-- i codici della lingua di destinazione supportano un elenco di più lingue in cui tradurre.
-- Qui stiamo passando solo una lingua:
-- La lingua del giocatore recuperata nello script locale
target_language_codes = {locale}
}
local result = oc:TranslateText(request)
if result.Error == nil then
return result.Response.translations[locale] -- Presumendo che translations[locale] contenga il testo tradotto
else
return "Errore: " .. result.Error.message
end
end
Test
L'API di traduzione in tempo reale attualmente supporta solo l'autenticazione RCC. Di conseguenza, devi distribuire il tuo codice a un'istanza di test per poter testare l'API da Studio. Utilizza il testing collaborativo per distribuire lo script a un'istanza di test e testare le tue modifiche.
Riferimento API di traduzione
Parametri della richiesta API
| Nome parametro | Tipo | Descrizione |
|---|---|---|
| path | string | Il percorso dell'universo. Obbligatorio. |
| text | string | Il testo da tradurre. Obbligatorio. |
| source_language_code | string | Il codice lingua IETF BCP-47 che rappresenta la lingua del testo di input. Se non fornito, il sistema rileverà automaticamente la lingua sorgente. |
| target_language_codes | Array<string> | Un elenco di codici lingua di destinazione in formato IETF BCP-47 per la traduzione. |
Campi di risposta API
| Nome campo | Tipo | Descrizione |
|---|---|---|
| source_language_code | string | Il codice lingua IETF BCP-47 che rappresenta la lingua rilevata o specificata dall'utente del testo sorgente. |
| translations | Dictionary<string, string> | Una mappa contenente le traduzioni richieste. La chiave è il codice lingua IETF BCP-47, e il valore è il testo tradotto per quella lingua. La mappa conterrà tutte le traduzioni richieste. Se il testo sorgente è stato filtrato, questa mappa sarà vuota. |
Limiti
Roblox utilizza la seguente formula per limitare le richieste per questa API in base al numero di giocatori nel tuo gioco:
max richieste al minuto per gioco = 600 + (1.5 * numero_di_utilizzatori_concorrenti)
C'è anche un limite combinato di 150 richieste al minuto, per server di gioco per tutte le API di Open Cloud.
Lingue supportate
L'API di traduzione in tempo reale supporta attualmente le seguenti lingue, che differiscono leggermente dalle lingue supportate per la traduzione automatica.
| Lingua | Codice lingua |
|---|---|
| Cinese (semplificato) | zh-cn |
| Cinese (tradizionale) | zh-tw |
| Inglese | en-us |
| Francese | fr-fr |
| Tedesco | de-de |
| Indonesiano | id-id |
| Italiano | it-it |
| Giapponese | ja-jp |
| Coreano | ko-kr |
| Polacco | pl-pl |
| Portoghese | pt-br |
| Russo | ru-ru |
| Spagnolo | es-es |
| Thai | th-th |
| Turco | tr-tr |
| Vietnamita | vi-vn |