Importando traduções

Jogos e internacionalização

O mundo é cheio de diferentes mercados e culturas e, para maximizar lucros™, hoje em dia os jogos são lançados em várias línguas. Para resolver isso, texto internacionalizado precisa ser suportado em qualquer game engine moderna.

Em aplicações desktop ou mobile regulares, internacionalização de texto é normalmente localizada em arquivos de recursos (ou arquivos .po para GNU). Jogos, no entanto, podem utilizar muito mais texto do que aplicações, então devem suportar métodos eficientes para lidar com grande quantidade de textos em múltiplos idiomas.

Existem duas abordagens para gerar jogos e aplicações multi-idiomas. Ambas são baseadas em um sistema de chave:valor. O primeiro é utilizar uma das linguagens como chave (normalmente Inglês), o segundo é usar um identificador específico. A primeira abordagem é provavelmente mais fácil para desenvolver se o jogo for lançado primeiro em inglês, e depois em outros idiomas, mas um completo pesadelo se estiver trabalhando com muitos idiomas ao mesmo tempo.

Em geral, jogos usam a segunda abordagem e um ID único é utilizado para cada string. Isto permite que você revise o texto enquanto ele está sendo traduzido para outros idiomas. O ID único pode ser um número, uma string, ou uma string com número (que é uma string de qualquer forma).

Nota

Se você precisar de um formato de arquivo mais poderoso, o Godot também suporta carregar traduções escritas no formato gettext .po. Veja Localization using gettext para detalhes.

Formato de tradução

To complete the picture and allow efficient support for translations, Godot has a special importer that can read CSV files. Most spreadsheet editors can export to this format, so the only requirement is that the files have a special arrangement. The CSV files must be saved with UTF-8 encoding without a byte order mark.

Aviso

Por padrão, o Microsoft Excel sempre salvará arquivos CSV com codificação ANSI em vez de UTF-8. Não há uma maneira integrada de fazer isso, mas há soluções como descritas aqui.

We recommend using LibreOffice or Google Sheets instead.

CSV files must be formatted as follows:

keys <lang1> <lang2> <langN>
KEY1 string string string
KEY2 string string string
KEYN string string string

The “lang” tags must represent a language, which must be one of the valid locales supported by the engine. The “KEY” tags must be unique and represent a string universally (they are usually in uppercase, to differentiate from other strings). These keys will be replaced at runtime by the matching translated string. Note that the case is important, “KEY1” and “Key1” will be different keys. The top-left cell is ignored and can be left empty or having any content. Here’s an example:

keys en es ja
SAUDAÇÃO Hello, friend! Hola, amigo! こんにちは
PERGUNTAR Como vai você? Cómo está? 元気ですか
DESPEDIDA Goodbye Adiós さようなら
CITAÇÃO “Hello” said the man. “Hola” dijo el hombre. 「こんにちは」男は言いました

O mesmo exemplo é mostrado abaixo como um arquivo de texto simples separado por vírgula, que deve ser o resultado da edição acima em uma planilha. Ao editar a versão de texto simples, certifique-se de fechar com aspas duplas qualquer mensagem que contenha vírgula, quebras de linha ou aspas duplas, para que as vírgulas não sejam analisadas como delimitadores, quebras de linha não criam novas entradas e aspas duplas não são tratadas como caracteres de fechamento. Certifique-se de evitar quaisquer aspas duplas que uma mensagem pode conter, precedendo-as com outra aspas dupla. Alternativamente, você pode selecionar outro delimitador do que a vírgula nas opções de importação.

keys,en,es,ja
GREET,"Hello, friend!","Hola, amigo!",こんにちは
ASK,How are you?,Cómo está?,元気ですか
BYE,Goodbye,Adiós,さようなら
QUOTE,"""Hello"" said the man.","""Hola"" dijo el hombre.",「こんにちは」男は言いました

Importador de CSV

Godot tratará os arquivos CSV como traduções por padrão. Ele irá importá-los e gerar um ou mais arquivos de recursos de tradução comprimidos ao lado dele.

A importação também adicionará a tradução à lista de traduções para carregar quando o jogo for iniciado, especificado em project.godot (ou nas configurações do projeto). Godot permite carregar e remover traduções em tempo de execução também.

Select the .csv file and access the Import dock to define import options. You can toggle the compression of the imported translations, and select the delimiter to use when parsing the CSV file.

../../../_images/import_csv.png

Be sure to click Reimport after any change to these options.