[TUTORIAL] Extração de textos do UnityText

Fórum para postagem de tutoriais, dicas, e discussão de assuntos relacionados a traduções.

[TUTORIAL] Extração de textos do UnityText

Em 31 Mar 2021, 20:33

FERRAMENTA DE EXTRAÇÃO DE TEXTOS PARA ARQUIVOS .CSV GERADOS PELO UNITYTEXT


Última atualização: 26/04/2021

Criação: Zexia.

Link para download: https://mega.nz/file/xxxT0A5b#QJZR2IIny ... OKHIaJVzw8

UTILIZAÇÃO:

1 - Execute "Ferramenta de Texto para Unity.exe".

Para EXTRAIR:

> Extrai (quase) somente os textos úteis do arquivo .csv.

2 - Digite 1.
3 - Selecione o arquivo .csv original gerado pelo UnityText.
4 - Informe a quantidade de códigos de texto.
5 - Digite um código de texto por vez.
6 - Cole os arquivos do arquivo "_Textos" gerado no Excel e traduza numa nova coluna.

Para REINSERIR:

> Insere a tradução no arquivo .csv, substituindo os textos originais.

2 - Digite 2.
3 - Selecione o arquivo .csv "_Textos" já traduzido.
4 - Use o .csv gerado "_Reinserir" normalmente no UnityText.

INÍCIO EDIT 01/04/2021

Para VALIDAR:

> Verifica inconsistência de tabulações e diferença no número de caracteres como aspas, quebras de linha, etc.

2 - Digite 3.
3 - Selecione o arquivo .csv "_Textos" já traduzido.
4 - Digite cada símbolo ou caractere que você quer verificar.
5 - Veja o log salvo na pasta do arquivo .csv.

EDIT 01/04/2021 CONTINUA LÁ EMBAIXO


EXPLICAÇÃO DETALHADA:

Quem já traduz há algum tempo, principalmente voluntariamente, já deve ter se deparado com aqueles textos de jogos feitos em Unity extraídos com o UnityText e geralmente cheio de códigos e textos de outros idiomas. Segue um exemplo do jogo Deep Sky Derelicts:

Imagem

A fim de resolver esse "problema", levando em conta que é muito comum acontecer de apagarmos sem querer uma tabulação (o que faz com que o jogo crashe), pensando em melhorar a visualização somente dos textos que precisamos traduzir e para possibilitar a utilização de tais textos em CAT tools ou em planilhas do Excel e do Google Drive (assim não é preciso sobrescrever o texto original, basta colocar a tradução na coluna ao lado), criei uma ferramenta que extrai somente os textos dos arquivos .csv gerados através da extração do UnityText.

Para que a ferramenta funciona corretamente, é preciso que os códigos das linhas de texto no arquivo .csv sigam um padrão. Felizmente, a maioria segue.

Vamos aos exemplos.

Jogo Little Witch Academia - Chamber of Time

Abaixo está um print do arquivo de texto do jogo Little Witch Academia - Chamber of Time extraído inicialmente com o UnityEX, depois com o UnityText.
Sublinhados em vermelho são os textos em inglês que devem ser traduzidos, e dentro dos retângulos vermelhos estão os códigos das linhas de texto. Reparem que esses códigos seguem um padrão: são iniciados por 0x12000000, 0x09000000 e 0x0C000000. Mais adiante no mesmo arquivo encontramos também o código 0x0F000000. Na ferramenta, bastaria informar 0x09, 0x12, 0x0C e 0x0F.

Imagem
Imagem

Lá para o final do arquivo também existem linhas que se quebram em mais de uma.

Imagem

O primeiro passo da ferramenta para a extração dos textos do arquivo .csv é reformatá-lo. Ela une essas linhas quebradas automaticamente. O arquivo reformato é salvo na mesma pasta do arquivo original com "_Reformatado" ao final do nome. Para o funcionamento correto da ferramenta, nem o arquivo original nem o reformatado podem ser alterados após a extração.

Imagem

Depois da reformatação, ocorre a extração dos textos em si. O arquivo de textos extraídos é salvo na mesma pasta do arquivo original com "_Textos" ao final do nome. Este é o arquivo que deve ser modificado.
Uma tabulação – a setinha entre o número e o texto de cada linha – separa ambos em "colunas". Dentro do retângulo vermelho estão os índices das linhas no arquivo original, e dentro do retângulo azul estão os textos traduzíveis.

Imagem

A separação em "colunas" possibilita copiar todo o texto do arquivo em colá-lo em uma planilha. Nunca apague nada da coluna de índices e da coluna de texto original. A tradução deve ser feita em uma terceira coluna. Se você quiser traduzir um pouco de cada vez e testar, pode copiar toda a coluna do texto original para a coluna onde deve entrar a tradução e ir alterando as células no seu próprio ritmo.
Outra maneira de traduzir, se não quiser usar nenhuma planilha, é inserir uma tabulação no final da linha no próprio Notepad++ ou qualquer editor de texto e então a sua tradução. Exemplo: O arquivo estará assim: 1>Texto original. Adicione: >Texto traduzido. Resultará em: 1>Texto original>Texto traduzido. Porém, o problema desse método é que as linhas ainda não traduzidas ou ficarão em branco dentro do jogo ou a ferramenta não vai reconhecer nada e então não vai funcionar.

Imagem

Com a tradução completa, copie as três colunas do Excel e cole no arquivo "_Textos". Você pode sobrescrever o conteúdo extraído nesse arquivo pelo conteúdo do Excel. Verifique se o número de linhas não foi alterado após a transferência.
Observe como o arquivo "_Textos" deve ficar para haver a reinserção:

Imagem

Se todos os passos tiverem sido seguidos corretamente, os textos originais serão substituídos pelos traduzidos no arquivo original, e o arquivo gerado por essa substituição será salvo na mesma pasta do original com "_Reinserir" ao final do nome. Veja o resultado:

Imagem

Depois disso, basta fazer o processo normal com o UnityText para poder reinserir o arquivo no jogo.

Jogo The Stillness of the Wind

Agora vamos ver um exemplo com o jogo The Stillness of the Wind. Este é um jogo em que a protagonista recebe muitas cartas de conhecidos, e no arquivo do jogo essas cartas ocupam algumas linhas.

Imagem

No caso dele, o único código de texto é 0x000000000000000009000000.
Para extrair os textos, executamos o arquivo "Ferramenta de Texto para Unity.exe". Devemos digitar 1 para extrair os textos ou 2 para reinseri-los.

Imagem

Na extração (1), é aberta uma janela para selecionar o arquivo .csv ORIGINAL, aquele que foi extraído com o UnityText.

Imagem

Depois de selecionado, devemos informar quantos códigos de texto o arquivo possui. No caso deste exemplo, possui somente 1 código. Então informamos o código 0x000000000000000009000000.

Imagem

Então, a reformatação e a extração são realizadas.

Imagem

Na pasta do arquivo original haverá (relacionado à ferramenta) os três arquivos a seguir:

Imagem

Abaixo, veja como ficou o arquivo reformatado. As linhas foram unidas, e no lugar das quebras foi inserido <br>. A tradução deve possuir o mesmo número de <br> do texto extraído. A posição do <br> na tradução é relativa, observe no texto original qual critério ele segue: se serve somente para separar linhas por questão de exibição (que é o caso do The Stillness of the Wind), se serve para quebrar o texto em determinado número de caracteres para não estourá-lo in-game, ou se tem alguma outra utilidade específica.

Imagem

Agora, observe que a ferramenta extraiu o texto "Letters/Letter0" também.

Imagem

Isso aconteceu porque essa linha possuía o mesmo código das linhas de texto, portanto a ferramenta não consegue diferenciar que não é um texto traduzível. "Letters/Letter0", apesar de estar no arquivo de textos extraídos, NÃO deve ser traduzido, pois claramente não é um texto. Somente copie e cole. Sendo assim, sempre que algo lhe parecer estranho, verifique no arquivo original se é um texto ou um código.

Veja a tradução disposta no Excel:

Imagem

E no Notepad++:
(Na primeira linha sublinhado de amarelo está o texto que não deve ser modificado, contornado de vermelho está o original, depois temos uma tabulação (a setinha) sublinhada de amarelo separando o original do traduzido, e por fim o texto traduzido contornado de azul.)

Imagem

Para fazer a reinserção, execute a ferramenta e selecione a opção "2 - Reinserir". Na reinserção, a única coisa que você precisa fazer é selecionar o arquivo TRADUZIDO ("_Textos"). Não é necessário informar nenhum código.

Imagem

Arquivo reinserido pronto para o UnityText:

Imagem

Jogo Bear With Me

Como nem tudo são flores, trouxe um exemplo em que a ferramenta não é capaz de extrair os textos em INGLÊS.

Imagem

Note que neste arquivo, temos os códigos que seguem um padrão. O código aqui é 0x000000000000000005000000. No entanto, o código está na linha do idioma ESPANHOL. Se você informar o código, todos os textos em espanhol serão extraídos, não os textos em inglês, pois estes estão uma linha acima das linhas que possuem o código. Neste caso, se o tradutor quiser substituir o idioma espanhol, a ferramenta vai servir. Com alguns ajustes no código da ferramenta é possível extrair os textos em inglês, porém essa função ainda não existe (talvez futuramente). Se alguém encontrar um caso parecido em um jogo que queira traduzir, me envie uma mensagem privada.

Jogo Deep Sky Derelicts

No jogo Deep Sky Derelicts temos dois códigos: 0x08000000 e 0x07000000.

Rodando a ferramenta, informe que são 2 códigos e insira um código de cada vez para fazer a extração. Não é necessário que eles sejam informados na ordem em que aparecem no arquivo.

Imagem

Para evitar problemas, todas as aspas são substituídas por §". Por isso, sempre que houver §" no texto original faça o mesmo no texto traduzido. Na reinserção esse símbolo é automaticamente retransformado em aspas.

Imagem

CONTINUAÇÃO EDIT 01/04/2021:

Validação

Para o exemplo de validação, mais uma vez vou usar o jogo Deep Sky Derelicts.
Imagine que você já terminou de traduzir o arquivo "_Textos", mas a reinserção dá problema. O arquivo acaba ficando com um número diferente de linhas, ou dá um erro que nem permite a conclusão da reinserção. Uma das causas prováveis é a falta (ou o excesso) de um caractere especial. Veja o print abaixo e note principalmente os caracteres sublinhados de vermelho.

Imagem

Durante a tradução, o tradutor sem querer adicionou uma tabulação ao final da linha 4037, apagou a tabulação que divide o texto original do texto traduzido na linha 4038, e esqueceu uma aspas (§") e uma quebra de linha (<br>) na linha 4040. Por causa disso, o arquivo .csv não vai funcionar in-game. O tradutor teria que fazer um trabalho de formiguinha para encontrar onde estão esses erros.

Imagem

Para resolver isso, existe a função de validação.

Imagem

Basta selecionar Validar caracteres (3), selecionar o arquivo "_Textos", e digitar os símbolos que deseja verificar (separe por espaço se for mais de um). Neste exemplo quis verificar §" <br> ; $. As tabulações são verificadas automaticamente.

Imagem

Resultado:

Imagem

Um arquivo de texto chamado {nomeDoArquivoOriginal}_log_validacao será salvo na pasta do .csv indicando em quais linhas cada inconsistência foi encontrada.

Imagem

FIM EDIT 01/04/2021


OBSERVAÇÕES IMPORTANTES

  • Esta ferramenta funciona em "conjunto" com o UnityText. Ou seja, só serve para arquivos extraídos com o UnityText.
  • Sempre digite os códigos do mesmo jeito que aparecem no arquivo, respeitando maiúsculas e minúsculas.
  • Antes de extrair os textos de um arquivo, veja se encontrou todos os códigos de texto. Uma dica para isso é abrir o arquivo original no Notepad++, clicar em "Localizar" > "Marcar...". Marque a opção "Marcar linha", digite os códigos que você já encontrou um a um e clique em "Localizar todos" (clique em "Localizar todos" a cada código que digitar). Role o arquivo e veja se tem alguma parte do arquivo sem marcação nenhuma. Se houver, é provável que ali exista mais algum código de texto.
  • Caso você perceba no meio da tradução que deixou um código passar batido, não existe uma solução muito prática. Suas opções são re-extrair os textos com a ferramenta (caso parte da tradução já esteja no arquivo "_Textos" faça o backup dele antes) e ajustar manualmente as partes que faltam, ou simplesmente ignorar e fazer a tradução dos que ficaram para trás direto no arquivo final ("_Reinserir").
  • A codificação de todos os arquivos .csv utilizados e gerados pela ferramenta deve ser UCS-2 Little Endian BOM (UCS-2 LE BOM). Se a codificação do arquivo for outra, abra-o no Notepad++, clique em "Formatar" > "Converter para UCS-2 Little Endian BOM".
    Ao fim da reinserção da uma tradução compare o número de linhas do arquivo original com o número de linhas do arquivo reinserido. Deve ser o mesmo.
  • Aproveitando para fazer uma propaganda de CAT tool, CAT tools são ferramentas cujo público-alvo são, principalmente, tradutores. Elas criam memórias de projetos que gravam tudo o que é traduzido pelo usuário e que podem ser utilizadas em outros projetos. Suponha que hoje você traduza "Hello, I am a potato". Essa tradução ficará gravada num arquivo da CAT tool, e quando você encontrar essa frase de novo daqui a 1 ano a CAT tool irá indicar que você a traduziu como "E aí, zé, eu sou uma batata". Além disso, elas possuem glossários dinâmicos: você adiciona um novo termo ao glossário sem precisar trocar de guia e automaticamente ela te mostra termos que já estão salvos no glossário. Chega de ter que ficar pesquisando termo em planilha, já deu (brincadeira, planilhas são legais também :P (mas não tão práticas))! Você pode salvar os textos extraídos pela ferramenta numa planilha .xlsx, ocultar a coluna dos números e tacar na CAT tool. Minha recomendação pessoal é a Smartcat (https://smartcat.com/), mas dá para encontrar várias outras gratuitas. Vai falar que não é formosa?
Imagem

Obrigada quem teve paciência para ler e se interessou pela ferramenta. Ela foi meu sonho por muito tempo, mas me faltavam as habilidades ihihi. Espero que possa facilitar a tradução de muita gente! Se houver alguma dúvida, sugestão, ou qualquer outra coisa, fiquem à vontade para falar :)!

EDIT 26/04/2021
- Adicionada compatibilidade com arquivos sharedassets e level (fui dormir e percebi que não funcionaria com eles :derpina: ).
- Adicionada função de voltar às opções iniciais depois que terminar um processo, em vez de ter que reabrir o programa.

FIM DO EDIT 26/04/2021
Tutorial de UnityEX e UnityText: https://forum.tribogamer.com/viewtopic.php?f=82&t=43077
Editado pela última vez por Zexia em 26 Abr 2021, 17:07, em um total de 6 vezes.

Re: [TUTORIAL] Extração de textos do UnityText

Em 01 Abr 2021, 10:32

Parabéns pelo tutorial, Zexia! Tenho certeza que vai ajudar muita gente!!!
Imagem

Re: [TUTORIAL] Extração de textos do UnityText

Em 01 Abr 2021, 13:29

Parabéns Zexia, excelente!
Imagem

Re: [TUTORIAL] Extração de textos do UnityText

Em 01 Abr 2021, 17:06

seijix3 escreveu:
01 Abr 2021, 10:32
Parabéns pelo tutorial, Zexia! Tenho certeza que vai ajudar muita gente!!!
Julio Cesar escreveu:
01 Abr 2021, 13:29
Parabéns Zexia, excelente!
Obrigada :awesome: !
Agora tem a função de validação também :joia:

Re: [TUTORIAL] Extração de textos do UnityText

Em 01 Abr 2021, 20:11

Muito obrigado Zexia ajudou bastante.
Estou tendo outra dificuldade nos jogos unity,que é extrair os textos completamente dos files de textos,o unitytext não está extraindo completamente,é tipo como se estivesse escondendo alguns textos.

Re: [TUTORIAL] Extração de textos do UnityText

Em 01 Abr 2021, 20:59

otaviotr15 escreveu:
01 Abr 2021, 20:11
Muito obrigado Zexia ajudou bastante.
Estou tendo outra dificuldade nos jogos unity,que é extrair os textos completamente dos files de textos,o unitytext não está extraindo completamente,é tipo como se estivesse escondendo alguns textos.
Eu nunca tive esse problema nos jogos que traduzi, mas sei que na tradução do ICEY aconteceu a mesma coisa. Você tem que ver se os textos "escondidos" não estão em algum outro arquivo, e se realmente não estiverem pode tentar extrair com o Unity Assets Bundle Extractor, acho que ele também faz extração de texto.

Re: [TUTORIAL] Extração de textos do UnityText

Em 20 Abr 2021, 00:20

Deve ter levado muito tempo pra fazer esse tutorial, muito obrigado por fazer ele, vou tentar entrar em algum projeto e seguir seus tutoriais para me tornar um tradutor

Re: [TUTORIAL] Extração de textos do UnityText

Em 20 Abr 2021, 12:09

jonatasx escreveu:
20 Abr 2021, 00:20
Deve ter levado muito tempo pra fazer esse tutorial, muito obrigado por fazer ele, vou tentar entrar em algum projeto e seguir seus tutoriais para me tornar um tradutor
Obrigada, jonatasx :)
Este tutorial é mais voltado pra questão de extração de textos em si, mas sobre tradução você consegue encontrar muitas dicas boas aqui: https://forum.tribogamer.com/viewtopic.php?f=82&t=8813

Re: [TUTORIAL] Extração de textos do UnityText

Em 26 Out 2023, 04:29

É muito fácil de usar e os comandos são simples. Seus comentários são detalhados. Até hoje ainda estou usando. Por favor, desenvolva mais e expanda o formato.


Voltar para “Tutoriais e Dicas para Traduções”

Ir para

Quem está online


Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes