Localização

Esta página foi traduzida automaticamente e pode conter erros. Encontrou um problema? Use o link "Edit this page" para ajudar a corrigir.

O Turian usa um único sistema de localização para o seu jogo e para o próprio Studio. As traduções ficam em assets de tabelas de textos; o código e os documentos de interface buscam textos por chave, e o idioma ativo pode mudar com o jogo rodando.

Tabelas de textos

Cada idioma é um arquivo .strings em qualquer lugar de Assets/ — por exemplo Assets/Localization/pt-BR.strings:

{
  "locale": "pt-BR",
  "entries": [
    { "key": "menu.play", "source": "Play", "translation": "Jogar", "state": "translated" },
    { "key": "menu.quit", "source": "Quit", "translation": "Sair", "state": "translated",
      "note": "Menu principal, último botão" },
    { "key": "inventory.items", "source": "{count} items",
      "plurals": { "one": "# item", "other": "# itens" }, "state": "translated" }
  ]
}

source é o texto original, translation o traduzido, e state acompanha o progresso (new, translated, …) para os tradutores. Todas as tabelas do projeto são carregadas quando o jogo inicia.

Configurações do projeto

O asset Localization Settings (New → Settings → Localization Settings no painel Assets) declara o Default Locale, idioma em que o jogo começa, e os Available Locales que ele oferece.

Buscando textos no código

var title = Localization.T("menu.play");                        // "Jogar" em pt-BR
var fallback = Localization.T("menu.credits", fallback: "Credits");
var items = Localization.T("inventory.items", count: 3);         // "3 itens"
var source = Localization.Source("Game over");                   // o próprio texto é a chave

Localization.SetLocale("pt-BR");
Log.Logger.LogInformation("Agora em {Locale}", Localization.ActiveLocale);

As consultas nunca lançam exceção: uma chave ausente retorna o fallback (ou a chave), e sem tabelas carregadas toda chamada devolve a entrada. A busca recua de uma região para o idioma — pt-BR → pt — e depois para o idioma padrão.

Para atualizar textos que você guardou, assine Localization.Service?.LocaleChanged.

Buscando textos em documentos de interface

O texto dos rótulos em um documento .ui é localizado automaticamente: o texto escrito serve como chave. Dê a um elemento um text-key para buscar uma chave explícita:

<Label text="Play" />                          <!-- buscado pelo texto de origem -->
<Button text="Quit" text-key="menu.quit" />    <!-- buscado pela chave -->

Veja Interface do jogo.

Mensagens, plurais e escolhas

As mensagens aceitam um subconjunto compacto do ICU MessageFormat:

Forma Exemplo
Substituição Olá, {name}!
Bloco de plural {count, plural, one {# maçã} other {# maçãs}}
Bloco de seleção {gender, select, female {Ela} male {Ele} other {Elu}} venceu
Formas de plural por entrada o objeto plurals de uma entrada, com as chaves zero, one, two, few, many, other

# representa a contagem. As categorias de plural seguem as regras CLDR de cada idioma, então português, polonês ou árabe escolhem a forma certa.

Trabalhando com tradutores

A biblioteca do editor converte tabelas de e para os formatos usados por ferramentas de tradução — XLIFF 1.2 e CSV — preservando chave, origem, destino, nota e estado. Assim o tradutor trabalha na ferramenta dele e o projeto mantém .strings como fonte da verdade.

Testando um idioma

O Play Mode e a CLI podem forçar um idioma por sessão:

turian-cli playmode MeuJogo --locale pt-BR --out pt-br.png
turian-cli screenshot MeuJogo --locale ja --out ja.png

O próprio Studio

O Studio é localizado com o mesmo sistema. Troque o idioma dele em Edit → Localization; inglês e português do Brasil acompanham a versão 1.0.


← Toda a documentação Editar esta página