Como traduzir um jogo Unity para o português
Traduza jogos Unity com o RuneTranslate — lendo TextAssets, campos de MonoBehaviour (Mono e IL2CPP) e StreamingAssets, por que é apenas texto externalizado, e como o guarda de identificadores impede que você quebre o jogo.
O Unity é o motor por trás de uma fatia crescente de jogos indie e visual novels japonesas — e o mais complicado dos motores comuns de traduzir, porque o Unity não tem um único formato de texto. O diálogo pode morar em blobs TextAsset, em campos de string de MonoBehaviour, em scripts soltos de StreamingAssets, ou compilado direto em uma DLL C#. Este guia percorre a tradução de um jogo Unity com o RuneTranslate e, tão importante quanto, explica a única regra que torna o Unity diferente: apenas texto externalizado.
A grande ressalva primeiro: apenas texto externalizado
O RuneTranslate traduz texto do Unity que mora em dados — arquivos de asset que o motor carrega em tempo de execução, incluindo os campos de string dos componentes MonoBehaviour (diálogos, nomes, rótulos). Ele lê esses campos em builds tanto Mono quanto IL2CPP: o layout de tipos vem das próprias DLLs do jogo no Mono, ou é reconstruído a partir dos metadados IL2CPP quando não há pasta Managed/. O que ele não consegue alcançar é texto fixo no próprio código C# compilado (Assembly-CSharp.dll). Na prática, jogos que mantêm seu script em assets e componentes traduzem bem — e abrir o projeto, o primeiro passo, te diz o que você tem.
O que você precisa
- RuneTranslate para Windows — gratuito, todos os motores e provedores desbloqueados.
- Uma pasta de jogo Unity — o diretório com o
.exedo jogo e uma pasta<GameName>_Data/(contendoglobalgamemanagers,resources.assets,data.unity3de arquivoslevel*). - Um idioma de destino — português, inglês, espanhol, francês, alemão, russo, chinês, italiano, turco, vietnamita e mais de 20 outros.
- Um provedor de tradução. O Google Translate gratuito funciona de imediato; o DeepL tem um tier gratuito; o OpenAI, o Anthropic, um modelo local e qualquer API compatível com OpenAI exigem sua própria chave.
Passo 1: Abra a pasta do jogo
Inicie o RuneTranslate, clique em Novo projeto e aponte-o para o diretório do jogo Unity. A detecção de motor procura pela pasta _Data/ e identifica o projeto como Unity. Um sidecar Python UnityPy embutido (enviado dentro do instalador) abre os arquivos de asset e lista as strings legíveis em um espaço de trabalho por projeto em %APPDATA%/RuneTranslate/unity-workspace/<projectId>/. Sua pasta de jogo original nunca é modificada. O Unity é um motor de melhor esforço — verifique se a build exportada roda antes de redistribuir.
Passo 2: Como as strings são extraídas
O RuneTranslate lê texto de todo lugar em que o Unity o externaliza:
- TextAssets — blobs de JSON / CSV / script embutidos em
.assetse AssetBundles, fatiados por um extrator ciente do formato. - Campos de string de MonoBehaviour — texto de exibição nos componentes (diálogos, nomes, rótulos), em builds tanto Mono quanto IL2CPP (a informação de tipo vem das DLLs do jogo, ou é reconstruída a partir dos metadados IL2CPP).
- StreamingAssets — arquivos de script soltos percorridos diretamente no disco (
.json,.txt,.csv,.tsv,.xml,.yaml,.kse mais). - AssetBundles Addressable criptografados — jogos que criptografam com AES seus AssetBundles Addressable são descriptografados automaticamente (a chave é derivada do próprio nome de arquivo do bundle), então seu texto extrai como qualquer outro bundle.
O Unity também é onde a supertradução causa mais dano, então o RuneTranslate traz um guarda para isso. Muitas strings de MonoBehaviour não são texto de exibição de forma alguma — são identificadores de controle e operandos de fluxo: nomes de cena que uma chamada LoadScene resolve por string, chaves de roteamento de mensagens, nomes de clipes de animação / som, nomes de partes Live2D, e os valores de comparação dentro da lógica If / SetVariable do Fungus (ex.: uma flag como 村落出口). Traduza esses e o jogo quebra silenciosamente — o sintoma clássico é uma tela de "carregando" infinita sem erro. O RuneTranslate os classifica automaticamente como excluídos (mostrados em vermelho, apenas opt-in), então o editor destaca diálogos e rótulos genuínos e deixa o maquinário em paz. As substituições {$var} do Fungus e a marcação {color=...} / TMP <...> são mascaradas atrás de placeholders para que sobrevivam intactas à tradução.
Passo 3: Traduza e revise
Escolha um provedor e rode. O DeepL ou um LLM leem melhor para diálogos; o Google Translate gratuito cobre menus e nomes de itens. Coloque seu elenco e termos recorrentes no glossário primeiro — veja o Glossário 101. Cada linha chega ao editor ao lado de sua origem; edite inline (salva ao desfocar ou com Ctrl+Enter), e rode o refinador por IA opcional para uma revisão de segunda passagem. O tier gratuito roda com um limite modesto (cerca de 2× mais lento nos provedores de IA, menos nos scrapers) — mesmos motores, mesma qualidade de saída; o pago apenas roda em velocidade máxima.
Passo 4: Exporte uma build jogável
Clique em Exportar. O RuneTranslate copia o jogo e então aplica as strings traduzidas de volta nos arquivos de asset no lugar. O mesmo guarda de exclusão roda na regravação, então um projeto antigo não pode acidentalmente enviar um nome de cena ou operando de fluxo traduzido na reexportação. A saída é uma cópia completa e executável do jogo no local que você escolher — inicie o .exe e ele joga no seu idioma de destino.
Traduzindo para um idioma não-latino (chinês, japonês, coreano, tailandês, árabe) cujos glifos a fonte integrada do jogo não consegue renderizar? O RuneTranslate injeta uma fonte de fallback na pilha de fontes do TextMeshPro na exportação, para que o texto traduzido apareça em vez de quadradinhos de glifo faltando.
Limitações conhecidas
- Apenas texto externalizado: strings fixas no código C# compilado (
Assembly-CSharp.dllno Mono, ou o binário IL2CPP) não são traduzidas. Campos de dados de MonoBehaviour são — em builds tanto Mono quanto IL2CPP. - A leitura de MonoBehaviour em IL2CPP precisa de um
global-metadata.datanalisável; metadados muito ofuscados podem não ser reconstruídos (melhor esforço). - Melhor esforço: confirme se o jogo exportado inicia e é lido corretamente antes de compartilhá-lo.
- Texto em imagem (logos, interface desenhada à mão, legendas de CG) não é traduzido — fora do escopo da tradução automática.
Por que isto é mais fácil do que o jeito antigo
A tradução manual de Unity significava descompactar assets com UABE ou AssetStudio, caçar quais TextAssets e campos de MonoBehaviour guardavam texto de verdade, evitar à mão as strings de identificador que travam o jogo, e então reimportar sem corromper a tabela de assets. O RuneTranslate dobra extrair, classificar (para você não traduzir maquinário), traduzir e aplicar-no-lugar em alguns cliques — com o editor aberto para você controlar as palavras.
Veja a página do motor Unity para a lista completa de recursos, leia o guia de TyranoBuilder para um motor baseado em HTML, ou baixe o RuneTranslate e experimente em um jogo real.
Pronto para experimentar o RuneTranslate?
O plano gratuito libera todos os motores + todos os provedores de tradução. O plano Supporter ($3/mo) libera velocidade total.
Baixar para Windows
