Comparador de Traduções i18n
Compara dois arquivos JSON de tradução e aponta chaves faltando, sobrando, vazias e placeholders divergentes entre os dois idiomas.
Cobertura
Esqueleto JSON das chaves faltando
O que costuma quebrar um arquivo de locale
Chave faltando costuma exibir o caminho cru na tela, o que é feio mas evidente. O erro silencioso é o placeholder que mudou: se a referência tem "Olá {nome}" e a tradução tem "Hello", o argumento da interpolação simplesmente some e ninguém percebe até alguém perguntar para quem era a mensagem.
O aninhamento também conta. Quando um arquivo tem menu como objeto e o outro tem menu como string, a maioria das bibliotecas de i18n devolve o objeto e imprime [object Object]. Esse caso aparece aqui como conflito de estrutura, e não como chave faltando, porque renomear a chave raramente é a correção certa.
Descubra o que falta no arquivo de tradução
Você mexeu no pt.json a semana toda e agora precisa saber o que o en.json não tem antes do deploy. Cole os dois arquivos aqui e a comparação sai separada por seção: chaves que faltam, chaves que sobraram, valores em branco e a barra de cobertura em porcentagem. No fim há o esqueleto JSON só das chaves faltando, com a mesma estrutura aninhada e valores vazios, pronto para colar no arquivo do outro idioma.
Os dois arquivos são achatados em caminhos com ponto antes da comparação, então menu.file.open e itens.0 viram chaves simples e o aninhamento deixa de atrapalhar. Em cima disso vem a checagem de placeholders, que entende os formatos mais usados de uma vez: {nome}, {{nome}}, {0}, %s, %d, %1$s, ${nome}, :nome, as tags numeradas do Trans e o nome da variável em blocos ICU de plural e select.
O erro que passa despercebido não é a chave faltando, que costuma imprimir o caminho cru na tela. É o placeholder que sumiu na tradução: se a referência diz Olá {nome} e a tradução diz Hello, o argumento é descartado em silêncio. Vale olhar também o conflito de estrutura, quando menu é objeto de um lado e string do outro — nesse caso a biblioteca costuma devolver o objeto e a interface exibe [object Object].
Perguntas frequentes
A comparação funciona com arquivos aninhados?
O que conta como valor vazio?
Por que apareceu uma chave em possivelmente não traduzidas?
Ferramentas Relacionadas
Comparador de JSON
Compare dois objetos JSON e visualize as diferenças lado a lado: campos adicionados, removidos e modificados. Suporta estruturas aninhadas. Processado no navegador.
Analisador de Tamanho de JSON por Chave
Analisa um JSON e mostra quantos bytes cada chave ocupa, em ordem de peso, com percentual do total e o caminho completo de cada nó.
Conversor JSON ↔ CSV
Converta dados entre JSON (array de objetos) e CSV bidirecional. Cole e converta instantaneamente no navegador, sem fazer upload de arquivos.