El flujo de trabajo estándar de traducción detecta cadenas en tu juego en función de la frecuencia con que son vistas por los jugadores y las agrega a tu tabla de localización para traducción. Puede omitir cadenas poco comunes y/o cadenas generadas durante el juego, como texto generado dinámicamente o texto creado por los jugadores. Puedes usar la API de traducción de texto para generar traducciones para estas cadenas en tiempo real, asegurando que tu juego esté completamente localizado.
Traducir texto al idioma de un jugador
Para traducir texto al idioma de un jugador, pasa su Player.LocaleId como el código de idioma de destino. A continuación, se muestra un ejemplo de cómo puedes obtener el ID de localización del jugador en un script del cliente y luego pasarlo a un Script en ServerScriptService para hacer la solicitud de traducción.
- La API de traducción es una Open Cloud API, lo que significa que necesitas una ruta para hacer una solicitud. En este caso, necesitas el ID del universo, que se puede encontrar en el menú desplegable del mosaico del juego en el Creator Hub.
- También debes incluir el paquete cliente de Open Cloud en tu juego; el script del servidor lo requiere.
Script del clientelocal ReplicatedStorage = game:GetService("ReplicatedStorage")local httpRequestFunction = ReplicatedStorage:WaitForChild("TranslateTextFunction")-- Texto a traducirlocal textToTranslate = "Este es el texto de ejemplo a traducir"-- Obtener la localización del jugadorlocal Players = game:GetService("Players")local player = Players.LocalPlayer-- obtener el ID de localización para la localización del jugador local o establecer en cualquier cadena de localización admitidalocal locale = player.LocaleIdlocal translatedText = httpRequestFunction:InvokeServer(textToTranslate, locale)print("Texto traducido: ", translatedText)
Script del servidor en ServerScriptService
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ServerScriptService = game:GetService("ServerScriptService")
local oc = require(ServerScriptService.OpenCloud.V2)
-- Encontrar en https://create.roblox.com/dashboard/creations en el menú desplegable de un mosaico de juego
local universeID = <your_universe_id>
-- Crear RemoteFunction
local remoteFunction = Instance.new("RemoteFunction")
remoteFunction.Name = "TranslateTextFunction"
remoteFunction.Parent = ReplicatedStorage
remoteFunction.OnServerInvoke = function(player, text, locale, uni)
print(player.Name .. " solicitó traducción para el texto: " .. text .. " al locale: " .. locale)
-- Preparar la solicitud de traducción
local request : oc.TranslateTextRequest = {
path = oc:UniversePath(universeID),
text = text,
-- los códigos de idioma de destino admiten una lista de múltiples localizaciones a las que traducir.
-- Aquí estamos pasando solo un idioma:
-- La localización del jugador recuperada 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 translations[locale] contiene el texto traducido
else
return "Error: " .. result.Error.message
end
end
Pruebas
La API de traducción en tiempo real actualmente solo admite autenticación RCC. Como resultado, debes desplegar tu código en una instancia de prueba para probar la API desde Studio. Utiliza pruebas colaborativas para desplegar el script en 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 | Tipo | Descripción |
|---|---|---|
| path | string | La ruta del universo. Requerido. |
| text | string | El texto a traducir. Requerido. |
| source_language_code | string | El código de idioma IETF BCP-47 que representa el idioma 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 | Tipo | Descripción |
|---|---|---|
| source_language_code | string | El código de idioma IETF BCP-47 que representa el idioma detectado o especificado por el usuario del texto de origen. |
| translations | Dictionary<string, string> | Un mapa que contiene las traducciones solicitadas. La clave es el código de idioma IETF BCP-47 y el valor es el texto traducido para ese idioma. El mapa contendrá todas las traducciones solicitadas. Si el texto de origen fue filtrado, este mapa estará vacío. |
Límites
Roblox utiliza la siguiente fórmula para limitar las solicitudes de esta API según el número de jugadores en tu juego:
máx. solicitudes por minuto por juego = 600 + (1.5 * número_de_usuarios_concurrentes)
También hay un límite combinado de 150 solicitudes por minuto, por servidor de juego para todas las API de Open Cloud.
Idiomas admitidos
La API de traducción en tiempo real actualmente admite los siguientes idiomas, que difieren ligeramente de los idiomas admitidos para traducción automática.
| Idioma | Código de idioma |
|---|---|
| Chino (Simplificado) | zh-cn |
| Chino (Tradicional) | zh-tw |
| Inglés | en-us |
| Francés | fr-fr |
| Alemán | de-de |
| Indonesio | id-id |
| Italiano | it-it |
| Japonés | ja-jp |
| Coreano | ko-kr |
| Polaco | pl-pl |
| Portugués | pt-br |
| Ruso | ru-ru |
| Español | es-es |
| Tailandés | th-th |
| Turco | tr-tr |
| Vietnamita | vi-vn |