Pular para o conteúdo

Idiomas

Onze idiomas já vêm completos — todas as telas, não apenas os botões — usando exatamente os termos que o próprio iPhone usa em cada idioma. Qualquer frase ausente em um idioma volta para o inglês string por string, de modo que uma tradução pela metade mostra o que já tem traduzido em vez de quebrar.

CódigoIdiomaCódigoIdioma
enEnglishptPortuguês (Brasil)
esEspañolplPolski
frFrançaisruРусский
deDeutschtrTürkçe
itItalianoarالعربية — da direita p/ esquerda
ja日本語
-- shared/config.lua
Config.Locale = 'en'

Esse é o padrão da cidade. Cada jogador pode alterar o idioma para si mesmo em Ajustes → Geral → Idioma, e a escolha fica salva junto com o restante de suas configurações.

Cada jogador lê o idioma que escolheu, dentro e fora do telefone. O telefone segue a escolha feita nos Ajustes, e o mesmo vale para os avisos exibidos fora do telefone — “Sem sinal aqui.”, “As duas mãos estão ocupadas.”, a chegada de uma nova candidatura.

Config.Locale é o idioma usado para um jogador que nunca escolheu um, e para qualquer mensagem que não seja dirigida a alguém em particular.

Para o seu próprio recurso: LFor(source, text, ...) responde no idioma daquele jogador, e L(text, ...) no idioma da cidade.

  • Datas e relógio. “Samstag, 19. September”, “9月19日土曜日”, e o relógio de 24 horas nos idiomas que o utilizam. O dinheiro permanece em $, do jeito que a cidade o contabiliza.
  • O árabe é lido da direita para a esquerda. A tela inteira é espelhada exatamente como em um iPhone em árabe: as linhas começam na direita e a seta de voltar aponta para a direita. Duas coisas permanecem iguais em todos os idiomas, assim como no iPhone — o teclado de discagem e a calculadora. Valores, datas e números dentro de uma frase em árabe mantêm sua ordem. Algarismos ocidentais e calendário gregoriano, como se lê em um telefone em Los Santos.
  • Contagens e plurais. Polonês, russo e árabe têm mais formas de plural do que apenas singular e plural, por isso suas contagens são exibidas como “Notatki: 4” — correto para qualquer número.

Uma pasta, um arquivo por idioma. Tudo está lá dentro: as 2.400 strings da tela e as duas dúzias exibidas fora do telefone — uma notificação da cidade, o motivo pelo qual ele não abre no ar.

locales/en.lua
locales/es.lua
locales/fr.lua
…

É um arquivo Lua, portanto o servidor e o cliente o carregam diretamente como script, sem análise extra e sem conversão. O telefone lê o mesmo arquivo e o interpreta, motivo pelo qual o formato é estrito: um ["key"] = "value", por linha, e um comentário é um comentário. Mantenha esse formato e ambos os lados verão as suas palavras.

Cada string é a sua própria chave:

Locales['es'] = {
["Verified account"] = "Cuenta verificada",
["The last {n} hours."] = "Las últimas {n} horas.",
}

A chave é o texto em inglês, então uma tradução ausente exibe o inglês em vez de um espaço em branco ou um código interno. Os valores entre chaves são preenchidos pelo telefone — mantenha-os e coloque-os onde a frase precisar no seu idioma, e não necessariamente na posição em que estavam no inglês. Um valor deixado como "" significa “mostrar o inglês”: é assim que nomes que nunca são traduzidos (Instapic, Bean Machine, Los Santos) são registrados.

O telefone só lê o idioma que o jogador escolhe, no momento em que ele o escolhe — onze dicionários não são carregados a cada inicialização para um telefone que exibe apenas um.

Abra o arquivo do idioma, encontre a linha e altere o valor:

["Wallet"] = "Cartera", -- the right-hand side is what the player reads

Reinicie o recurso. Nada mais faz referência a isso.

  1. Copie locales/en.lua para locales/<code>.lua — nl.lua, por exemplo — e mude Locales['en'] para Locales['nl'].
  2. Traduza os valores. As chaves nunca mudam.
  3. Se o código não for um dos onze originais, adicione-o à lista que o seletor oferece, em html/core/onboarding.js: const languages=[['en','English','Hello'], … ,['nl','Nederlands','Hallo']]; — o código, o nome no próprio idioma e uma saudação para a primeira tela.
  4. Defina Config.Locale = 'nl', caso deva ser o idioma padrão da cidade.

O manifesto já inclui todos os arquivos dentro de locales/, então não há nada para registrar lá. O seletor marca um idioma que ainda não tem traduções como Exibido em inglês por enquanto em vez de escondê-lo.