Executando verificação de segurança...
4
{
  "pt": {
           "BTN_START_GAME":  "Novo Jogo",
           "BTN_HOW_TO_PLAY":  "Como Jogar",
           "TEXT_HOW_TO_PLAY":  "Q ou E -> gira a câmera\nW, A, S, D ou botão esquerdo do mouse e arrastar -> movimenta a câmera\nBotão direito do mouse ou teclado numérico (1, 2, 3, 4) -> coloca uma torre",
           "BTN_CLOSE":  "Fechar",
  },
  "en": {
           "BTN_START_GAME":  "New Game",
           "BTN_HOW_TO_PLAY":  "How To Play",
           "TEXT_HOW_TO_PLAY":  "Q or E -> rotate camera\nW, A, S, D or left mouse click and drag -> move camera\nRight mouse button or numeric keyboard (1, 2, 3, 4) -> place tower",
           "BTN_CLOSE":  "Close",
  }
}

Achei interessante porque eu tive uma idéia muito parecida em um projeto pessoal meu (que pretendo tornar open-source futuramente).

Inicialmente, a idéia foi idêntica à sua, mas encontrei um problema. No futuro, com mais idiomas adicionados, ficaria muito trabalhoso reescrever o comando em cada idioma diferente.

A solução foi adicionar a chave sendo o comando, e o valor as traduções mais ou menos assim:


{
	"BTN_START_GAME": {
              "pt": "Novo Jogo",
              "en": "New game"
        },
        "BTN_HOW_TO_PLAY":  {
               "pt": "Como Jogar",
               "en": "How to play"
        }
        ...
        ...
}

Será que essa é realmente a melhor opção?

Carregando publicação patrocinada...
3

Boa ideia, fiz algo semelhante em um projeto pessoal e realmente reduz muito a repetição de chaves. Sem contar que pra navegar no JSON ficou bem mais intuitivo, pois como as chaves de idioma estão todas no mesmo alinhamento, é mais fácil de comparar as strings para uma eventual correção na tradução 😄

1

Com certeza, tem esse outro benefício de comparação e também para possíveis correções de traduções. Vou mudar para ficar melhor. Obrigado pelo feedback pessoal!

2

Opa, valeu pelo feedback Gabriel!

Concordo com você, se torna muito repetitivo para adicionar mais idiomas. Acho que vou fazer essa alteração tanto no JSON quanto nos scripts responsáveis por pegar a informação, assim vou ter apenas uma chave para buscar tal informação de texto e dentro dela conter os valores referentes a tal idioma.

1

Eu acho que nesse caso vocês vão criar um excesso de repetições desnecessário. No meu caso eu criaria um JSON para cada idioma e concentraria um por um ali, usando o mesmo esquema de

3

Eu acho que você não terminou de escrever o seu comentário ou aconteceu algum bug, mas na minha opinião, criar um arquivo JSON para cada idioma daria no mesmo do que foi feito no código dele. A única diferença é que iria ter mais arquivos no programa.