Pages

quinta-feira, agosto 11, 2011

Como traduzir Jogos de Celular


Bom galerinha, hoje é 11 de agosto dia do? Estudante! Em homenagem aos estudantes que se matam em sala de aula para aprender alguma coisa, seja em escolas ou em faculdades, venho postar para vocês um tutorial ensinando como traduzir jogos de celular. Você pode pensar que é uma tarefa dificil, mas muito pelo contrário, traduzir jogos é uma coisa muito simples.

O Tutorial a seguir foi todo feito pelo nosso amigo Jperes, e está disponível em seus blog. Esse breve tutorial é feito com o conhecimento básico em tradução, o que já serve para a tradução de muitos jogos java para celular, será usado conteúdo retirado de outros sites para complementar as informações (fontes citadas no final).

Programas necessários:

Antes de começar, veja se você tem esses programas ou similares (caso não tenha, baixe-os clicando nos links abaixo)
Em alguns casos, também podemos usar o Bloco de Notas do seu sistema operacional. Será usado nesse tutorial os programas descritos acima, mas use o de sua preferência. Note que alguns Editores Hexadecimais tem formas de exibição dos caracteres um pouco diferente (explicado mais a frente);

Extraindo o Jogo:

 

Essa é a parte mais fácil, simplesmente selecione o jogo que deseja traduzir (com extensão .JAR), dê um clique direito e selecione “Extrair para XxX”. Em seguida, vá a pasta que foi criada.

Achando o(s) arquivo(s) de texto:

Em alguns jogos será fácil de achar o arquivo (ou OS arquivos) que deve(m) ser traduzido(s). Simplesmente pelo fato de estarem em “.txt”, mas na maioria das vezes, as empresas adoram usar extensões diferentes como “.lang” (Fishlabs), “.bin” (EA) “.package” ou somente letra ou número sem extensão (Gameloft) e diversas outras extensões. Para começar, usaremos o jogo Sven004, após extrair ele você verá o arquivo “text.txt” que é o arquivo onde estão os textos.

Agora, veja os textos que podem ser traduzidos, se aceita acentuação e MÃOS-A-OBRA! Nesse texto, note que “^” é usado para mostrar algo e não deve ser removido do texto. Você pode mudar o lugar dele, mas deve colocar no texto.


Lembre-se: Traduza uma certa quantia de textos e salve. Isso é como modo de previnir que perca tempo traduzindo muito texto e depois acabar dando erro.

Entendendo o código Hexadecimal:

Antes de começar a falar da tradução, temos que aprender o que é o código hexadecimal. Bem, números decimais já sabemos o que é, aquilo que aprendemos desde pequenos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Decimais (a palavra já endica 10) são 10 números, e eles formam todos numeros existentes.

Os numeros hexadecimais, fogem as regras dos 10 números, e eles tem como o próprio nome diz, 16 caracteres. Mas tambem usa os 10 números antigos, e mais umas letras para completar os 16. Assim é o alfabeto hexadecimal: 00h, 01h, 02h, 03h, 04h, 05h, 06h, 07h, 08h, 09h, 0Ah, 0Bh, 0Ch, 0Dh, 0Eh, OFh, 10h, 11h, 12h, 13h, 14h, 15h, 16h, 17h, 18h... Lembrando que o "h" significa hexadecimal.

Mas para quê precimos aprender isso? Simples, um byte de memória consegue representar 16 caracteres. Nos editores hexadecimais (o próprio nome diz) aparece vários numeros hexadecimais em uma janela a esquerda. Na rom em si, eles aparecem na janela da esquerda do editor hexadecimal, e você traduzirá os textos na janela a direita, e as vezes terá editar nos hexadecimais (para aumentar o tamanho da palavra por exemplo), mas o mais importante de saber números hexadecimais é para calcularmos ponteiros (coisa que não veremos nesse tutorial).


Modos de Tradução:

Usando o Bloco de Notas

Em alguns jogos, os textos podem ser facilmente editados usando o simples Bloco de Notas do sistema operacional (já visto acima), devendo ver os seguintes detalhes:
  • O jogo aceita acentuação?
  • Aceita todos caracteres? (como: ã, õ, ç, …)
  • Cada texto está numa linha separada?
  • Há código de cores nos textos ou para dar espaço?
Nem todos jogos aceitam acentuação, por isso, pegue uma palavra e acentue por exemplo: NEW GAME tente COMEÇAR para saber se o jogo aceitará o Ç, você também pode tentar usar outros como Õ, Ã, É, Ç para ver se aceita todos caracteres. Tenha cuidado com as linhas, em alguns textos, o fato de cada texto possuir uma linha deve ser respeitada pois se não haverá erro ao executar o jogo. Os jogos tambem podem ter códigos de cores ou nova linha e etc... Por exemplo: Jogos da Gameloft usam /H e /h ou /0 e outros para colorir os textos. Jogos como da Firemint e outras produtoras menores, usam /n para dar uma nova linha.

Se você abrir o arquivo e ele estiver com os textos tudo junto… siga ao próximo passo. 

Usando o Editor de Hexadecimal


Podemos usar o bloco de notas para traduzir o “text.txt”, mas agora vamos tentar traduzir de “outra forma”. Abra o text.txt com a opção “Abrir com…” e escolha o “XVI32.exe”. Ao abrir o arquivo você verá como na imagem.

O lado ESQUERDO do editor representa o código Hexadecimal, já o lado DIREITO representa os textos, alterando de um lado, você automaticamente alterará o outro lado. Note que na 3ª imagem, há umas linhas vermelhas, elas mostram do lado “Hexa” (Esquerdo) o código 0D0A, esse código aperece do lado “Texto” (Direita) aparece como 02 espaços. Primeiro vá até a opção TOOLS e veja se a opção Overwrite está marcada. Em seguida vá ao lado dos textos e edite os textos. Mas devemos ter em mente que a string 0D0A não deve ser apagada, mas e então como aumentar os textos?


Vá em EDIT e em Insert String, insira o texto e aperte ENTER (ou clique em OK). Quem gosta de apanhar é sadomasoquista, então use o Bloco de Notas que é mais fácil e rápido para esse arquivo.


Agora vamos pegar um arquivo que deve usar o editor Hexa, usaremos o arquivo bin.all do jogo Saints Row 2, localize nele (apertando CTRL+F) o texto “English” e veja que antes desse texto há dois espaços vazios. Olhe do lado Hexa e veja que temos o código 0007. A primeira parte desse hexa é o “00″, isso significa que ali começa o texto (por assim dizer, para ficar mais fácil de entender) e o “07″ significa a quantia de letras que virá depois, nesse caso, ENGLISH – que tem 07 letras. Mas e como colocar o texto PORTUGUÊS?

Veja que a palavra PORTUGUÊS pode conter 9 ou 10 caracteres dependendo da limitação do jogo. Agora você deverá saber se o jogo vai aceitar a acentuação normal ou em Hexadecimal. Como fazer isso? Simples. No local de English, coloque Inglês (só para TESTAR). Compacte o jogo e teste, se abrir e aparecer o “ê”, beleza, se não aparecer ou o jogo não iniciar, vamos ao método de acentuação Hexadecimal, ou seja, Português terá 10 caracteres!

Faremos o seguinte: vá onde está os dois espaços vazios e aperte a tecla “TAB” do teclado (acima do Caps Lock) para trocar de lado exatamente onde aparecerá o 0007. Troque para 000A e aperte TAB novamente para voltar ao lado do texto… Mas por que diabos 000A? 0A significa que o que vir a seguir dele terá 10 caracteres (veja a parte "Entendendo o código Hexadecimal"). Voltando ao texto... Se você apertou TAB após trocar para 000A, você estará com a seleção no 2º quadro vazio antes da palavra. agora vá trocando o English por Portugu e PARE! Ai já foram 07 caracteres e agora? Vá em EDIT, Insert String no modo “Text String” escreva isso: XXs. Mas por que essa baboseira?

Ao dar ENTER (ou apertar o ok), você notará que o jogo inseriu os 3 caracteres, ficando com 10 ao invés dos 07 de antes.

Tá, mas agora ficou PortuguXXs, que coisa é essa? Volte a seleção até o 1º dos “X” e aperte TAB (indo ao lado do Hexa) e escreva C3AA, isso deixará do lado texto isso: ê, correto? Então perfeito! É assim que ficará: Português (10 Caracteres!). Mas por que C3AA? Veja a tabela mais abaixo. Mais abaixo estarão as tabelas de códigos das letras e números Hexa.


Para tirar a prova, vá até onde está o 000A e olhe na parte de baixo do editor.

Algumas limitações:

Algumas empresas, principalmente a Gameloft (e acho que a única), coloca seus textos de modo “unidos venceremos” ou seja, algo do tipo assim : BACKMENUHELPOPTIONS. O que fazer nesse caso? Como eu disse, esse tutorial é básico... não entra nessa parte... pois ai envolve ponteiros e outras coisas mais… Mas você pode traduzir assim mesmo, mas não ficará uma tradução boa.

Textos como os da Fishlabs, por exemplo pode conter algo do tipo: 0104, isso significa que ali possui mais de 300 caracteres. Durante os textos podem conter a string 0A sozinha, que significa que é uma nova linha, entre outros... Mas isso são casos particulares, então cada jogo deve ser testado várias vezes antes de concluir a tradução.

Caracteres mais comuns:

Veja aqui os caracteres mais comuns usados nos arquivos.

 A  À= c380 Á= c381 Â= c382 Ã= c383 à= c3a0 á= c3a1 â= c3a2 ã= c383
 C  Ç= c387 ç= c3a7
 E  È= c388 É= c389 Ê= c38a è= c3a8 é= c3a9 ê= c3aa
 I  Í= c38d í= c3ad
 O  Ó= c393 Ô= c394 Õ= c395 ó= c3b3 ô= c3b4 õ= c3b5
 U  Ú= c39a ú= c3ba

Nota Final:

Esse é o básico (bem básico) da tradução de games de celular em Java. É possível usar outros programas e métodos de tradução. Caso queira maiores informações dê uma olhada nos sites das fontes. Tutorial totalmente escrito por JPeres.

Fontes:

Gamevicio, CDJinfo & JPeres.
Algumas modificações feitas por Gabriel Dark.

2 comentários:

  1. Muito obrigado amigo. Eu estava querendo traduzir o jogo Harry Potter e as Relíquias da morte - Parte 2 porque eu só achava o jogo em inglês. Agora vou poder traduzir o jogo e passar para meus amigos. Obrigado mesmo!

    ResponderExcluir
  2. Valeu, boa sorte na sua tradução e qualquer duvido so comentar!

    ResponderExcluir

Antes de um comentário ser publicado, ele ainda deverá ser aprovado. Por esse motivo, o comentário pode levar um certo tempo até ser exibido. Tenha paciência.