Internacionalizando jogos

Introdução

It would be great if the world spoke only one language (Seria ótimo se o mundo falasse um só idioma) Infelizmente para nós desenvolvedores, esse não é o caso. Enquanto jogos independentes ou de nicho normalmente não precisam de localização, jogos visando um mercado mais massivo muitas vezes requerem localização. O Godot oferece muitas ferramentas para fazer este processo mais direto, então este tutorial é mais como uma coleção de dicas e truques.

A localização geralmente é feita por estúdios específicos contratados para a função e, apesar da enorme quantidade de softwares e formatos de arquivos disponíveis para isso, a forma mais comum de fazer localização até hoje ainda é com planilhas. O processo de criar as planilhas e importá-las já é abordado no tutorial Importando traduções, então este poderia ser visto mais como uma continuação daquele.

Nota

Utilizaremos a demonstração oficial como exemplo; você pode baixá-la da Biblioteca de Assets.

Configurando a tradução importada

As traduções podem ser atualizadas e reimportadas quando são alteradas, mas ainda precisam ser adicionadas ao projeto. Isso é feito em Projeto → Configurações do projeto → Localização:

../../_images/localization_dialog.png

A caixa de diálogo acima é usada para adicionar ou remover traduções em todo o projeto.

Localizando recursos

Também é possível instruir o Godot para usar versões alternativas de assets (recursos), dependendo do idioma atual. A aba Remapeamentos* pode ser usada para isso:

../../_images/localization_remaps.png

Selecione o recurso a ser remapeado e, em seguida, adicione algumas alternativas para cada locale.

Convertendo chaves em texto

Alguns controles, como Button e Label irão automaticamente buscar uma tradução se o seu texto corresponder a uma chave de tradução. Por exemplo, se o texto de um rótulo for "MAIN_SCREEN_GREETING1" e essa chave existir na tradução atual, o texto será traduzido automaticamente.

No código, a função Object.tr() pode ser usada. Isso apenas pesquisará o texto nas traduções e o converterá se encontrado:

level.set_text(tr("LEVEL_5_NAME"))
status.set_text(tr("GAME_STATUS_" + str(status_index)))

Tornando os controles redimensionáveis

O mesmo texto em diferentes idiomas pode variar muito em comprimento. Para isso, certifique-se de ler o tutorial em Size and anchors, pois ajustar dinamicamente os tamanhos de controle pode ajudar. Container pode ser útil, assim como as opções de quebra de texto disponíveis em Label.

TranslationServer

O Godot tem um servidor que lida com gerenciamento de tradução de baixo nível chamado TranslationServer. As traduções podem ser adicionadas ou removidas durante o tempo de execução; o idioma atual também pode ser alterado em tempo de execução.

Linha de comando

A linguagem pode ser testada ao executar o Godot a partir da linha de comando. Por exemplo, para testar um jogo em francês, o seguinte argumento pode ser fornecido:

godot --language fr

Traduzindo o nome do projeto

O nome do projeto se torna o nome do aplicativo ao exportar para diferentes sistemas operacionais e plataformas. Para especificar o nome do projeto em mais de um idioma, crie uma nova configuração application/name nas Configurações do projeto e anexe o identificador do locale a ele. Por exemplo, para o espanhol, isto seria application/name_es:

../../_images/localized_name.png

Se você não tem certeza sobre o código do idioma a ser usado, consulte a lista de códigos de locale.