Traduzir

Traduz arquivos de locale i18next e JSON

Locale JSON é aninhado, e suas strings carregam variáveis como {{name}}. Uma ferramenta que vê apenas texto pode renomear uma chave, achatar o aninhamento ou traduzir a variável. KAERIS devolve o arquivo na mesma forma, com cada variável onde estava.

KAERIS traduziu esta página e verificou cada linha traduzindo-a de volta. Um falante nativo ainda não revisou. Original em inglês

Como um arquivo locale JSON é construído

Um arquivo por idioma (en.json, de.json), ou um por namespace (locales/en/common.json). As chaves são o contrato com seu código, então apenas os valores são traduzidos. i18next escreve formas plurais como chaves separadas (inbox_one, inbox_other); next-intl, Vue I18n e FormatJS as colocam em uma única string ICU.

Arquivo de origemen.json
{
  "nav": { "greeting": "Welcome back, {{name}}!" },
  "inbox_one": "{{count}} new message",
  "inbox_other": "{{count}} new messages"
}

O que observar em traduções JSON

Uma execução real, antes e depois

Uma execução real: nosso arquivo de teste de 97 strings, alemão, 26 de outubro de 2026, cortado para quatro chaves. A última linha mostra uma perda que a verificação pegou nessa execução.

Antesen.json
{
  "ph": {
    "mustache": "Hi {{firstName}}, your order {{orderId}} has shipped.",
    "reactTrans": "By continuing you accept our <0>Terms</0> and <1>Privacy Policy</1>.",
    "nesting": "$t(nav.cart) has been updated"
  },
  "icu": {
    "copiesLeft": "{count, plural, =0 {Sold out} one {Only # copy left} other {Only # copies left}}"
  }
}
Depoisde.json
{
  "ph": {
    "mustache": "Hallo {{firstName}}, Ihre Bestellung {{orderId}} wurde versendet.",
    "reactTrans": "Durch die fortgesetzte Nutzung stimmen Sie unseren <0>Nutzungsbedingungen</0> und <1>Datenschutzrichtlinien</1> zu.",
    "nesting": "Der Warenkorb wurde aktualisiert"
  },
  "icu": {
    "copiesLeft": "{count, plural, =0 {Ausverkauft} one {Nur noch # Exemplar} other {Nur noch # Exemplare}}"
  }
}
Verificação gratuita neste arquivo/check
error ph.nesting: lost placeholder $t(nav.cart)

O que o KAERIS faz com isso

Execute em três etapas

  1. Instale o CLI

    Execute pip install kaeris. Nenhuma conta é necessária para os limites gratuitos.

  2. Traduza o arquivo

    Execute kaeris translate en.json --langs de,ja --verify. Os arquivos de.json e ja.json aparecem ao lado da origem.

  3. Verifique o resultado

    Execute kaeris check --source en.json --langs de,ja. Ele sai com código 1 se uma variável, um número ou uma chave estiver errada, para que o CI possa parar o merge.

pip install kaeris
kaeris init --preset i18next
kaeris translate en.json --langs de,ja --verify
kaeris check --source en.json --langs de,ja

Perguntas

Quais layouts JSON funcionam?

Arquivos de chave-valor planos e aninhados, como usados por i18next, Vue I18n, next-intl e FormatJS. O nível superior tem que ser um objeto, como {"greeting": "Hello"}. Arrays de strings também são traduzidos.

Ele mantém referências {{count}} e $t(…)?

Variáveis e referências são comparadas com a origem após a tradução. Uma linha que perdeu uma é sinalizada; o exemplo acima mostra uma execução real onde $t(nav.cart) foi perdido e a verificação pegou.

É gratuito?

Sim, sem conta: 10.000 caracteres por arquivo e até 8 idiomas por execução. Uma chave API gratuita eleva o limite para 50.000 caracteres. A licença vitalícia custa $79 uma vez, usando sua própria chave OpenRouter; planos mensais começam em $19. Preços

Posso rodar pelo terminal ou em CI?

Sim. pip install kaeris, então kaeris translate en.json --langs de,ja. O GitHub Action executa a mesma tradução em um pull request. Docs do CLI · GitHub Action

Continue

Referência do CLI · Referência de verificação · Traduzir no navegador · Verificação gratuita · Converter formatos · Pseudo-localização

Outros formatos: YAML · .po · ARB · XLIFF · .strings · .xcstrings · .properties · .resx · CSV · Markdown · Fluent · Android XML