El flujo de trabajo de traducción estándar detecta cadenas en tu experiencia en función de la frecuencia con que son vistas por los jugadores y las agrega a tu tabla de localización para la traducción.Puede que se pierdan cadenas poco comunes y/o cadenas generadas durante el juego, como texto generado dinámicamente o texto creado por los jugadoresPuede usar la API de traducción de texto para generar traducciones para estas cadenas en tiempo real, asegurando que su experiencia esté completamente localizada.
Traducir el texto al idioma de un jugador
Para traducir el texto al idioma de un jugador, pase su Player.LocaleId como código de idioma objetivo.A continuación se muestra un ejemplo de cómo puedes obtener la ID del idioma del jugador en un script del cliente y luego pasarla a un Script en ServerScriptService para hacer la solicitud de traducción.
- La API de traducción es una API de nube abierta, lo que significa que necesitas un camino para hacer una solicitud.En este caso, necesitas el ID del universo, que se puede encontrar en el menú de desbordamiento de la etiqueta de la experiencia en el Centro de creadores.
- También debes incluir el paquete de cliente de nube abierta en tu experiencia; el script del servidor lo requiere.
Script de cliente
local ReplicatedStorage = game:GetService("ReplicatedStorage")local httpRequestFunction = ReplicatedStorage:WaitForChild("TranslateTextFunction")-- Texto para traducirlocal textToTranslate = "This is the example text to translate"-- Obtener la ubicación del jugadorlocal Players = game:GetService("Players")local player = Players.LocalPlayer-- obtener la ID del idioma para el idioma del jugador local o establecerla a cualquier cadena de idioma admitidalocal locale = player.LocaleIdlocal translatedText = httpRequestFunction:InvokeServer(textToTranslate, locale)print("Translated text: ", translatedText)
Script del servidor en ServerScriptService
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ServerScriptService = game:GetService("ServerScriptService")
local oc = require(ServerScriptService.OpenCloud.V2)
-- Encuéntralo en https://create.roblox.com/dashboard/creations en el menú de desbordamiento de una ficha de experiencia
local universeID = <your_universe_id>
-- Crear una función remota
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)
-- Prepare la solicitud de traducción
local request : oc.TranslateTextRequest = {
path = oc:UniversePath(universeID),
text = text,
-- los códigos de idioma objetivo admiten una lista de múltiples locales para traducir.
-- Aquí estamos pasando un solo idioma:
--El reproductor local recuperado en el script local
target_language_codes = {locale}
}
local result = oc:TranslateText(request)
if result.Error == nil then
return result.Response.translations[locale] -- Suponiendo que las traducciones[locale] contienen el texto traducido
else
return "Error: " .. result.Error.message
end
end
Prueba
La API de traducción en tiempo real actualmente solo soporta la autenticación RCC.Como resultado, debe desplegar su código en una instancia de prueba para probar la API desde Studio.Usa Prueba en equipo para desplegar el script a una instancia de prueba y probar tus cambios.
Referencia de la API de traducción
Parámetros de solicitud de la API
Nombre del parámetro | Escribe | Descripción |
---|---|---|
camino | texto | El camino del universo. Requerido. |
texto | texto | El texto a traducir. Requerido. |
fuente_idioma_code | texto | El código de lenguaje BCP-47 del IETF que representa el lenguaje del texto de entrada. Si no se proporciona, el sistema detectará automáticamente el idioma de origen |
target_language_codes | Array<string> | Una lista de códigos de idioma de destino en formato IETF BCP-47 para la traducción. |
Campos de respuesta de la API
Nombre del campo | Escribe | Descripción |
---|---|---|
fuente_idioma_code | texto | El código de idioma BCP-47 del IETF que representa el idioma detectado o especificado por el usuario del texto fuente. |
traducciones | Dictionary<string, string> | Un mapa que contiene las traducciones solicitadas.La clave es el código de idioma BCP-47 de la IETF, y el valor es el texto traducido para ese idioma.El mapa contendrá todas las traducciones solicitadas.Si el texto fuente fue filtrado, este mapa estará vacío. |
Limitaciones
Roblox usa la siguiente fórmula para limitar las solicitudes de esta API en función del número de jugadores en tu experiencia:
max requests per minute per experience = 600 + (1.5 * number_of_concurrent_users)
También hay un límite combinado de 150 solicitudes por minuto, por servidor de juego para todas las API de nube abierta.
Idiomas soportados
La API de traducción en tiempo real actualmente soporta los siguientes idiomas, que difieren ligeramente de los idiomas admitidos para la traducción automática.
Lenguaje | Código de idioma |
---|---|
Chino (simplificado) | zh-cn |
Chino (tradicional) | zh-tw |
Inglés | en-us |
francés | fr-fr |
Alemania | de-de |
Indonesio | identificación-id |
Italiano | it-it |
Japonese | ja-jp |
coreano | ko-kr |
polaco | pl-pl |
Portugués | pt-br |
Rusia | ru-ru |
español | es-es |
Tailandia | th-th |
Turquía | tr-tr |
Vietnamita | vi-vn |