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

If you need a more powerful file format, Godot also supports loading translations written in the gettext .po format. See Localization using gettext for details.

Formato de tradução

Para permitir suporte eficiente a traduções, Godot possui um importador especial que pode ler arquivos CSV. Todos os editores de planilhas (seja ele LibreOffice, Microsoft Office, Google Docs, etc.) podem exportar para este formato, então o único requisito é que os arquivos tenham uma organização especial. Os arquivos CSV devem ser salvos com codificação UTF-8 e formatados como se segue:

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 Olá, amigo! Hola, amigo! こんにちは
PERGUNTAR Como vai você? Cómo está? 元気ですか
TCHAU (BYE) Goodbye Adiós さようなら
QUOTE “Hello” said the man. “Hola” dijo el hombre. 「こんにちは」男は言いました

The same example is shown below as a comma-separated plain text file, which should be the result of editing the above in a spreadsheet. When editing the plain text version, be sure to enclose with double quotes any message that contains commas, line breaks or double quotes, so that commas are not parsed as delimiters, line breaks don’t create new entries and double quotes are not parsed as enclosing characters. Be sure to escape any double quotes a message may contain by preceding them with another double quote. Alternatively, you can select another delimiter than comma in the import options.

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.",「こんにちは」男は言いました

CSV importer

Godot vai tratar arquivos CSV como traduções por padrão. Ele vai importá-los e gerar um ou mais arquivos de recurso de tradução compressas próximas a ele.

Importing will also add the translation to the list of translations to load when the game runs, specified in project.godot (or the project settings). Godot allows loading and removing translations at runtime as well.

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.