
Guias / Bastidores
Como traduzimos os nossos jogos para telemóvel para 14 idiomas
O que foi preciso para levar os nossos jogos Android a 14 idiomas: como organizamos os ficheiros de textos, porque contam as regras de plural e os tipos de letra, os erros de tradução que voltavam sempre, um bug que só afeta telemóveis na Europa e porque 14 idiomas significam 16 fichas na loja.
Os nossos seis jogos estão totalmente traduzidos para 14 idiomas: inglês, alemão, espanhol, francês, croata, indonésio, italiano, japonês, coreano, português, russo, esloveno, turco e chinês tradicional. Os quatro primeiros, Idle Ronin, Idle Summoner, Idle AI Factory e Block Brain, somam cerca de 2.100 textos em inglês, de 254 no Block Brain a 1.253 no Idle Ronin, cada um traduzido 13 vezes. O Idle Restaurant: Miami e o ONI Snakes foram lançados nos mesmos 14 idiomas. Foi isto que deu trabalho, e é isto que voltaríamos a fazer.
Um ficheiro de textos por idioma, com contexto
Cada jogo tem um ficheiro de texto simples por idioma. Uma entrada é a linha original em inglês, marcada com @, seguida da tradução, marcada com =, e a maioria das entradas traz um comentário escrito para quem traduz. Este é o primeiro monstro do ficheiro inglês do Idle Summoner:
# monster name with its number in the summon chain (1-55); names appear on small labels
@ {0}. Slime
Esses comentários foram a coisa mais útil que acrescentámos. O ficheiro inglês do Idle Summoner tem 156 para 258 textos. Quem traduz sabendo que um texto fica numa etiqueta minúscula, ou que {0} é um número, erra muito menos do que quem adivinha só pelas palavras.
Usar o próprio texto inglês como chave mantém os ficheiros legíveis, mas tem uma armadilha. Um texto igual nas duas colunas não é automaticamente um nome que tem de ficar em inglês: no Idle Ronin, cerca de 680 das primeiras 1.185 entradas eram iguais ao texto inglês. Só os verdadeiros nomes próprios ficam em inglês, os dos 19 Guardiões, os nomes das unidades e 12 trajes, e o nosso script de build bloqueia exatamente esses.
As regras de plural não são opcionais
O inglês tem duas formas: 1 unit, 2 units. Muitos idiomas têm mais, e as regras variam. O nosso código Loc segue as regras de plural para números inteiros das tabelas Unicode CLDR:
| Idiomas | Formas que o nosso código usa |
|---|---|
| Inglês, alemão, espanhol, italiano | one, other |
| Francês, português | one (0 e 1), other |
| Croata | one, few, other |
| Russo | one, few, many |
| Esloveno | one, two, few, other |
| Turco, indonésio, japonês, coreano, chinês | uma só forma |
O esloveno é o que surpreende: tem uma forma própria para o dois, por isso diz-se «2 enoti», mas «5 enot». Se o teu código só conhece singular e plural, cada um destes idiomas mostra gramática errada em algum lado.
Tipos de letra: as letras que não sabias que faltavam
O tipo de letra do texto do Idle Summoner era uma cópia reduzida do Noto Sans KR Black a que faltavam č, š, ž e ć, os acentos da Europa Ocidental, as letras turcas e o chinês tradicional. As letras em falta ou passavam para um tipo de letra do telemóvel ou nem apareciam. Refizemo-lo com todas as letras que as nossas tabelas usam e acrescentámos o Noto Sans JP para o japonês e o Noto Sans TC para o chinês tradicional. As etiquetas no tipo de letra pixel do jogo só o mantêm enquanto o texto couber nas letras que esse tipo de letra tem.
Os tipos de letra também podem enganar. No tipo de letra coreano do Idle Ronin, o N maiúsculo está desenhado de forma a que ON e OFF se leiam «OΠ». Trocámos esses interruptores pelas palavras coreanas 켜기 e 끄기, que de qualquer modo se leem melhor.
Os erros que voltavam em todos os idiomas
Seja como for que um jogo é traduzido, o primeiro rascunho raramente está pronto. O nosso repetia o mesmo punhado de erros em quase todos os idiomas, os mesmos que a nossa própria revisão em esloveno tinha apanhado primeiro:
- «Particle», uma definição gráfica, traduzida com a palavra da física em vez de «Efeitos».
- «Stack», as cópias extra de uma unidade, deixado em inglês ou traduzido como «monte» em vez de «cópias».
- Uma missão para derrotar o monstro chamado Treasure Chest, traduzida como partir baús do tesouro.
- Texto traduzido por inteiro para linhas e emblemas onde só cabem uma ou duas palavras.
- «FIGHT FLOOR {0}» com um verbo a mais que deixava o botão demasiado comprido.
Por isso escrevemos um verificador que mostra exatamente esses textos em qualquer idioma, e entregamos a lista antes de a tradução começar. Os dois idiomas traduzidos com a lista na mão não precisaram de correções; os traduzidos sem ela precisaram de umas seis cada um.
Verifica os ecrãs, não só os ficheiros
Um ficheiro pode estar completo enquanto o ecrã ainda mostra inglês. O nosso teste: muda o jogo para outro idioma, recolhe todo o texto visível no ecrã e compara-o com o ficheiro inglês. O que continuar em inglês é uma etiqueta que o código nunca traduz. No Idle Ronin, essa varredura encontrou um botão OPEN sempre visível e botões das definições presos no idioma que estava ativo quando o menu foi aberto pela primeira vez.
Depois verifica se tudo cabe numa resolução de telemóvel real. Olhamos para cada ecrã em 1080 x 2400 nos idiomas mais longos e em japonês, coreano, chinês e russo, e preferimos encurtar o texto a encolhê-lo até ninguém o conseguir ler.
Uma vírgula que estraga gravações na Europa
Um bug não tem nada a ver com palavras. Num jogo que estamos a criar, a gravação junta números com vírgulas. Num telemóvel cujo idioma escreve as casas decimais com vírgula, como em grande parte da Europa, 7392.58 passa a 7392,58, a vírgula a mais parte o número em dois, e todos os valores seguintes mudam uma posição. Quem testa em inglês nunca o vê. A solução é uma linha no arranque que fixa a formatação dos números na cultura invariante, mais uma proteção para que as gravações que já se estragaram continuem a carregar.
14 idiomas, 16 fichas na loja
O Google Play tem fichas separadas para o espanhol de Espanha e da América Latina e para o português de Portugal e do Brasil. Mantemos uma tradução dentro do jogo por idioma, mas escrevemos o texto da loja à parte para cada mercado, com os seus próprios termos de pesquisa. Isso dá 16 fichas por jogo, cada uma com o seu título, a sua descrição breve, a sua descrição completa e as suas capturas de ecrã. O nosso site segue o mesmo padrão, e explicamos como o construímos num artigo à parte.
O que voltaríamos a fazer
- Escreve um comentário de contexto para cada texto.
- Bloqueia os nomes próprios no build, não na cabeça de quem traduz.
- Implementa as regras de plural antes de chegar a primeira tradução.
- Verifica se os teus tipos de letra têm todas as letras que as tuas tabelas usam.
- Mantém uma lista de textos problemáticos conhecidos e entrega-a logo de início.
- Percorre os ecrãs noutro idioma à procura de inglês esquecido.
- Grava os dados na cultura invariante.
- Conta com 16 fichas na loja, não 14.
Queres ver o resultado? Muda o idioma no Idle Ronin, no Idle Summoner, no Idle AI Factory, no Block Brain, no Idle Restaurant: Miami ou no ONI Snakes: todos falam os 14.
Fontes
- Unicode CLDR, Language Plural Rules.
- Código dos jogos da ONI Games, setembro de 2026: Idle Summoner (Loc.cs, LocFonts.cs, Localization/Summoner/en.txt), Idle Ronin (Localization/Ronin), Idle AI Factory (Localization/AIFactory), Block Brain (Localization/Brain).








