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 traduzidolocal textToTranslate = "This is the example text to translate"-- Obtenha o local do jogadorlocal 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 suportadalocal locale = player.LocaleIdlocal 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âmetro | Tipo | Descrição |
---|---|---|
caminho | texto | O caminho do universo. Requerido. |
texto | texto | O texto a ser traduzido. Requerido. |
source_language_code | texto | O 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_codes | Array<string> | Uma lista de códigos de idioma alvo no formato IETF BCP-47 para tradução. |
Campos de resposta da API
Nome do campo | Tipo | Descrição |
---|---|---|
source_language_code | texto | O código de idioma BCP-47 do IETF que representa o idioma detectado ou especificado pelo usuário do texto de origem. |
traduções | Dictionary<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.
Linguagem | Código de Linguagem |
---|---|
Chinês (simplificado) | pt-br |
Chinês (Tradicional) | pt-br |
Inglês | pt-br |
Francês | pt-pt |
Alemão | de-de |
Indonésio | identidade-id |
Italianos | ela-ela |
Japonês | ja-jp |
Coreano | ko-kr |
Polonês | pt-pt |
Português | pt-br |
Russão | ru-ru |
Espanês | pt-pt |
Tailândia | pt-pt |
Turquês | tr - tr |
Vietnês | vi-vn |