O fluxo de trabalho padrão de tradução detecta strings em seu jogo com base na frequência com que são visualizadas pelos jogadores e as adiciona à sua tabela de localização para tradução. Ele pode perder strings incomuns e/ou strings geradas durante o jogo, como texto gerado dinamicamente ou texto criado pelos jogadores. Você pode usar a API de tradução de texto para gerar traduções para essas strings em tempo real, garantindo que seu jogo esteja totalmente localizado.
Traduzir texto para o idioma de um jogador
Para traduzir texto para o idioma de um jogador, passe o Player.LocaleId dele como o código de idioma de destino. Abaixo está um exemplo de como você pode obter o ID de localidade do jogador em um script do cliente e, em seguida, passá-lo para um Script em ServerScriptService para fazer a solicitação de tradução.
- A API de tradução é uma Open Cloud API, o que significa que você precisa de um caminho para fazer uma solicitação. Neste caso, você precisa do ID do universo, que pode ser encontrado no menu suspenso do tile do jogo no Creator Hub.
- Você também deve incluir o pacote cliente do Open Cloud em seu jogo; o script do servidor precisa dele.
Script do clientelocal ReplicatedStorage = game:GetService("ReplicatedStorage")local httpRequestFunction = ReplicatedStorage:WaitForChild("TranslateTextFunction")-- Texto a ser traduzidolocal textToTranslate = "Este é o texto de exemplo para traduzir"-- Obter a localidade do jogadorlocal Players = game:GetService("Players")local player = Players.LocalPlayer-- obter o ID da localidade da localidade do jogador local ou definir para qualquer string de localidade suportadalocal locale = player.LocaleIdlocal translatedText = httpRequestFunction:InvokeServer(textToTranslate, locale)print("Texto traduzido: ", translatedText)
Script do servidor em ServerScriptService
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ServerScriptService = game:GetService("ServerScriptService")
local oc = require(ServerScriptService.OpenCloud.V2)
-- Encontrar em https://create.roblox.com/dashboard/creations no menu suspenso de um tile de jogo
local universeID = <your_universe_id>
-- Criar RemoteFunction
local remoteFunction = Instance.new("RemoteFunction")
remoteFunction.Name = "TranslateTextFunction"
remoteFunction.Parent = ReplicatedStorage
remoteFunction.OnServerInvoke = function(player, text, locale, uni)
print(player.Name .. " solicitou tradução para o texto: " .. text .. " para a localidade: " .. locale)
-- Preparar a solicitação de tradução
local request : oc.TranslateTextRequest = {
path = oc:UniversePath(universeID),
text = text,
-- os códigos de idioma de destino suportam uma lista de várias localizações para traduzir.
-- Aqui estamos passando apenas um idioma:
-- A localidade do jogador recuperada no script local
target_language_codes = {locale}
}
local result = oc:TranslateText(request)
if result.Error == nil then
return result.Response.translations[locale] -- Supondo que translations[locale] contém o texto traduzido
else
return "Erro: " .. result.Error.message
end
end
Testando
A API de tradução em tempo real atualmente suporta apenas autenticação RCC. Como resultado, você deve implantar seu código em uma instância de teste para testar a API a partir do Studio. Use testes colaborativos para implantar o script em uma instância de teste e testar suas alterações.
Referência da API de Tradução
Parâmetros da solicitação da API
| Nome do Parâmetro | Tipo | Descrição |
|---|---|---|
| path | string | O caminho do universo. Necessário. |
| text | string | O texto a ser traduzido. Necessário. |
| source_language_code | string | O código de idioma IETF BCP-47 representando a língua do texto de entrada. Se não fornecido, o sistema detectará automaticamente a língua de origem. |
| target_language_codes | Array<string> | Uma lista de códigos de idioma de destino no formato IETF BCP-47 para tradução. |
Campos de resposta da API
| Nome do Campo | Tipo | Descrição |
|---|---|---|
| source_language_code | string | O código de idioma IETF BCP-47 representando a língua detectada ou especificada pelo usuário do texto de origem. |
| translations | Dictionary<string, string> | Um mapa contendo as traduções solicitadas. A chave é o código de idioma IETF BCP-47 e o valor é o texto traduzido para aquele idioma. O mapa conterá todas as traduções solicitadas. Se o texto de origem foi filtrado, este mapa estará vazio. |
Limites
O Roblox usa a seguinte fórmula para limitar solicitações para esta API com base no número de jogadores em seu jogo:
máx. solicitações por minuto por jogo = 600 + (1.5 * número_de_usuários_concorrentes)
Há também um limite combinado de 150 solicitações por minuto, por servidor de jogo para todas as APIs do Open Cloud.
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.
| Idioma | Código do Idioma |
|---|---|
| Chinês (Simplificado) | zh-cn |
| Chinês (Tradicional) | zh-tw |
| Inglês | en-us |
| Francês | fr-fr |
| Alemão | de-de |
| Indonésio | id-id |
| Italiano | it-it |
| Japonês | ja-jp |
| Coreano | ko-kr |
| Polonês | pl-pl |
| Português | pt-br |
| Russo | ru-ru |
| Espanhol | es-es |
| Thai | th-th |
| Turco | tr-tr |
| Vietnamita | vi-vn |