Como traduzir um jogo de Unity para o inglês (texto externalizado)
Um guia passo a passo para traduzir jogos de Unity para o inglês com o RuneTranslate: como ler TextAssets, campos de MonoBehaviour e StreamingAssets, por que só funciona com texto externalizado e como a proteção de identificadores evita que você quebre o jogo.
Unity é o motor por trás de uma fatia cada vez maior dos jogos indie e das visual novels japonesas — e o mais complicado de traduzir entre os motores comuns, porque o Unity não tem um único formato de texto. Os diálogos podem estar em blocos TextAsset, em campos de string de MonoBehaviour, em scripts avulsos de StreamingAssets ou compilados diretamente em uma DLL de C#. Este guia mostra como traduzir um jogo de Unity com o RuneTranslate e, tão importante quanto, explica a única regra que torna o Unity diferente: somente texto externalizado.
A grande ressalva primeiro: somente texto externalizado
O RuneTranslate traduz o texto do Unity que fica nos dados — arquivos de recurso que o motor carrega em tempo de execução, incluindo os campos de string dos componentes MonoBehaviour (diálogos, nomes, rótulos). O que ele não traduz é o texto que um desenvolvedor fixou diretamente no código C# compilado — a Assembly-CSharp.dll nas builds Mono, ou o binário IL2CPP. Os campos de MonoBehaviour são lidos em builds tanto Mono quanto IL2CPP: o RuneTranslate obtém o layout de tipos das próprias DLLs do jogo (Mono), ou o reconstrói a partir dos metadados do IL2CPP quando não há pasta Managed/. Na prática: jogos que mantêm o script em recursos e componentes traduzem bem; jogos que compilam cada linha no código só traduzem parcialmente — e você não vai saber qual tem até abri-lo, que é o primeiro passo.
O que você precisa
- RuneTranslate para Windows — grátis, com todos os motores e provedores desbloqueados.
- Uma pasta de jogo de Unity — o diretório com o
.exedo jogo e uma pasta<GameName>_Data/(contendo os arquivosglobalgamemanagers,resources.assets,data.unity3delevel*). - Um idioma de destino — inglês, espanhol, francês, alemão, português, 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 nível gratuito; OpenAI, 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 de Unity. A detecção de motor procura a pasta _Data/ e identifica o projeto como Unity. Um componente auxiliar Python UnityPy embutido (incluído no instalador) abre os arquivos de recurso 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. Unity é um motor de melhor esforço — verifique se a build exportada roda antes de redistribuí-la.
Passo 2: Como as strings são extraídas
O RuneTranslate lê texto de todos os lugares onde o Unity o externaliza:
- TextAssets — blocos de JSON / CSV / script embutidos em
.assetse AssetBundles, fatiados por um extrator que reconhece o formato. - Campos de string de MonoBehaviour — texto exibido nos componentes (diálogos, nomes, rótulos), em builds tanto Mono quanto IL2CPP (a informação de tipos vem das DLLs do jogo, ou é reconstruída a partir dos metadados do IL2CPP).
- StreamingAssets — arquivos de script avulsos (
.json,.txt,.csv,.ks) percorridos diretamente no disco.
O Unity também é onde a tradução em excesso causa mais estrago, então o RuneTranslate inclui uma proteção para isso. Muitas strings de MonoBehaviour não são texto exibido — 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 de Live2D e os valores de comparação dentro da lógica If / SetVariable do Fungus (por exemplo, um sinalizador como 村落出口). Se você traduzir isso, o jogo quebra silenciosamente — o sintoma clássico é uma tela de «carregando» infinita sem nenhum erro. O RuneTranslate classifica esses itens automaticamente como excluídos (exibidos em vermelho, ativados só por você), de modo que o editor mostra os diálogos e rótulos genuínos e deixa a maquinaria em paz. As substituições {$var} do Fungus e a marcação {color=...} / TMP <...> são mascaradas atrás de marcadores de posição para sobreviverem intactas à tradução.
Passo 3: Traduza e revise
Escolha um provedor e execute. O DeepL ou um LLM funcionam melhor para diálogos; o Google Translate gratuito cobre menus e nomes de itens. Monte primeiro um glossário com seu elenco e termos recorrentes — veja Glossário 101. Cada linha aparece no editor ao lado da origem; edite em linha (salva ao perder o foco ou com Ctrl+Enter) e execute o refinador de IA opcional para uma revisão em uma segunda passagem. A versão gratuita do RuneTranslate é limitada a uma velocidade ~3–4× mais lenta que a paga — com a mesma qualidade de resultado.
Passo 4: Exporte uma build jogável
Clique em Exportar. O RuneTranslate copia o jogo e depois reinsere as strings traduzidas nos arquivos de recurso no lugar. A mesma proteção de exclusão roda na reescrita, então um projeto antigo não consegue inserir por acidente 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 roda no seu idioma de destino.
Limitações conhecidas
- Somente texto externalizado: strings fixadas diretamente no código C# compilado (
Assembly-CSharp.dllno Mono, ou o binário IL2CPP) não são traduzidas. Os 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 que o jogo exportado inicia e é lido corretamente antes de compartilhá-lo.
- Texto em imagens (logotipos, interfaces desenhadas à mão, legendas de CG) não é traduzido — fora do escopo da tradução automática.
Por que isso é mais fácil que o jeito antigo
Traduzir Unity manualmente significava desempacotar recursos com UABE ou AssetStudio, caçar quais TextAssets e campos de MonoBehaviour continham texto real, evitar na mão as strings de identificador que travam o jogo e depois reimportar sem corromper a tabela de recursos. O RuneTranslate reúne extrair, classificar (para você não traduzir a maquinaria), traduzir e reinserir no lugar em alguns cliques — com o editor aberto para você controlar a redação.
Veja a página do motor Unity para a lista completa de recursos, leia o guia do TyranoBuilder para um motor baseado em HTML, ou baixe o RuneTranslate e teste em um jogo de verdade.
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