Traduzir conteúdo dinâmico automaticamente

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

O fluxo de trabalho de tradução padrão detecta strings na sua experiência com base na frequência com que são vistas por jogadores e as adiciona à sua tabela de localização para tradução.Pode perder cordas incomuns e/ou cordas geradas durante o jogo, como texto gerado dinamicamente ou texto criado por jogadoresVocê pode usar a API de tradução de texto para gerar traduções para essas strings em tempo real, garantindo que a sua experiência esteja totalmente localizada.

Traduzir texto para o idioma de um jogador

Para traduzir o texto para o idioma de um jogador, passe seu Player.LocaleId como código de idioma alvo.Abaixo está um exemplo de como você pode obter o ID do idioma local do jogador em um script do cliente e depois passá-lo para um Script em ServerScriptService para fazer o pedido de tradução.

  • A API de tradução é uma API de Nuvem Aberta, o que significa que você precisa de um caminho para fazer um pedido.Neste caso, você precisa do ID do universo, que pode ser encontrado no menu de transbordamento da tela da experiência no Creator Hub.
  • Você também deve incluir o pacote de cliente da Nuvem Aberta em sua experiência; o script do servidor exige isso.
Script de cliente

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local httpRequestFunction = ReplicatedStorage:WaitForChild("TranslateTextFunction")
-- Texto a ser traduzido
local textToTranslate = "This is the example text to translate"
-- Obtenha o local do jogador
local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- obtenha o ID local para o idioma do jogador local ou defina para qualquer string de idioma suportada
local locale = player.LocaleId
local translatedText = httpRequestFunction:InvokeServer(textToTranslate, locale)
print("Translated text: ", translatedText)
Script do servidor no Serviço de Script de Servidor

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ServerScriptService = game:GetService("ServerScriptService")
local oc = require(ServerScriptService.OpenCloud.V2)
-- Encontre em https://create.roblox.com/dashboard/creations no menu de transbordamento de um mosaico de experiência
local universeID = <your_universe_id>
-- Criar Função 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 o pedido de tradução
local request : oc.TranslateTextRequest = {
path = oc:UniversePath(universeID),
text = text,
-- códigos de idioma alvo suportam uma lista de vários locais para traduzir.
-- Aqui estamos passando apenas um idioma:
--O local do jogador recuperado no script local
target_language_codes = {locale}
}
local result = oc:TranslateText(request)
if result.Error == nil then
return result.Response.translations[locale] -- Supondo que as traduções[locale] contenham o texto traduzido
else
return "Error: " .. result.Error.message
end
end

Testando

A API de tradução em tempo real atualmente só suporta a autenticação RCC.Como resultado, você deve implantar seu código em uma instância de teste para testar a API do Studio.Use Teste em Equipe para implantar o script em uma instância de teste e testar suas alterações.

Referência da API de Tradução

Paraâmetros de solicitação da API

Nome do parâmetroTipoDescrição
caminhotextoO caminho do universo. Requerido.
textotextoO texto a ser traduzido. Requerido.
source_language_codetextoO código de idioma BCP-47 do IETF que representa o idioma do texto de entrada. Se não for fornecido, o sistema detectará automaticamente o idioma de origem.
target_language_codesArray<string>Uma lista de códigos de idioma alvo no formato IETF BCP-47 para tradução.

Campos de resposta da API

Nome do campoTipoDescrição
source_language_codetextoO código de idioma BCP-47 do IETF que representa o idioma detectado ou especificado pelo usuário do texto de origem.
traduçõesDictionary<string, string>Um mapa que contenha as traduções solicitadas.A chave é o código de idioma BCP-47 do IETF, e o valor é o texto traduzido para esse idioma.O mapa conterá todas as traduções solicitadas.Se o texto de origem foi filtrado, este mapa ficará vazio.

Limitos

O Roblox usa a seguinte fórmula para limitar as solicitações para esta API com base no número de jogadores em sua experiência:

max requests per minute per experience = 600 + (1.5 * number_of_concurrent_users)

Há também um limite combinado de 150 solicitações por minuto, por servidor de jogo para todas as APIs de Nuvem Aberta.

Idiomas suportados

A API de tradução em tempo real atualmente suporta os seguintes idiomas, que diferem ligeiramente dos idiomas suportados para tradução automática.

LinguagemCódigo de Linguagem
Chinês (simplificado)pt-br
Chinês (Tradicional)pt-br
Inglêspt-br
Francêspt-pt
Alemãode-de
Indonésioidentidade-id
Italianosela-ela
Japonêsja-jp
Coreanoko-kr
Polonêspt-pt
Portuguêspt-br
Russãoru-ru
Espanêspt-pt
Tailândiapt-pt
Turquêstr - tr
Vietnêsvi-vn