Traduzir

Traduzir arquivos ARB do Flutter

Um arquivo .arb é JSON com mensagens ICU e um bloco @key de metadados ao lado de cada string. O KAERIS traduz as mensagens, mantém os metadados e verifica a sintaxe ICU depois.

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 ARB é construído

JSON puro. Cada mensagem fica ao lado de uma entrada @message com sua descrição e tipos de placeholder; @@locale nomeia o idioma. Plurais e seleções são strings ICU: {count, plural, =0{…} one{…} other{…}}.

Arquivo de origemapp_en.arb
{
  "@@locale": "en",
  "welcome": "Welcome back, {name}!",
  "@welcome": {
    "description": "Greeting on the home screen",
    "placeholders": { "name": { "type": "String" } }
  },
  "itemCount": "{count, plural, =0{No items} one{{count} item} other{{count} items}}",
  "@itemCount": {
    "placeholders": { "count": { "type": "int" } }
  }
}

O que observar nas traduções ARB

Uma execução real: traduzido para Alemão e verificado

Uma execução real, 27 de outubro de 2026, nada editado manualmente: kaeris translate app_en.arb --langs de com kaeris 0.2.35, 2.7 segundos, modelo google/gemini-2.5-flash-lite, o padrão do nível gratuito. Abaixo, o arquivo alemão que ele escreveu e o que kaeris check diz sobre ele.

Resultado em Alemãoapp_de.arb
{
  "@@locale": "de",
  "welcome": "Willkommen zurück, {name}!",
  "itemCount": "{count, plural, =0{Keine Artikel} one{{count} Artikel} other{{count} Artikel}}",
  "@welcome": {
    "description": "Greeting on the home screen",
    "placeholders": {
      "name": {
        "type": "String"
      }
    }
  },
  "@itemCount": {
    "placeholders": {
      "count": {
        "type": "int"
      }
    }
  }
}
kaeris checkexit code 0
$ kaeris check --source app_en.arb --langs de
✓ de: complete & placeholder-safe
✓ all locales complete & placeholder-safe

O que o KAERIS faz com isso

Execute em três etapas

  1. Instale o CLI

    Execute pip install kaeris.

  2. Traduza o template

    Execute kaeris translate lib/l10n/app_en.arb --langs de,ja.

  3. Verifique o resultado

    Execute kaeris check com a origem e --pattern 'app_{lang}.arb'; ele sai com código 1 em caso de variável ou bloco ICU corrompido.

pip install kaeris
kaeris init --preset flutter-arb
kaeris translate lib/l10n/app_en.arb --langs de,ja --verify
kaeris check --source lib/l10n/app_en.arb --langs de,ja --pattern 'app_{lang}.arb'

Perguntas

As entradas @metadata são mantidas?

Sim. Descrições e tipos de placeholder permanecem ao lado de cada mensagem; @@locale é reescrito para o idioma de destino.

E se o plural ICU estiver errado em uma tradução?

A verificação compara os blocos ICU com a origem e nomeia o problema, por exemplo, um ramo =0 descartado. Na execução real acima, o plural retornou com os três ramos e a verificação não teve nada a relatar.

É 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 lib/l10n/app_en.arb --langs de,ja. Veja também Flutter. 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: JSON · YAML · .po · XLIFF · .strings · .xcstrings · .properties · .resx · CSV · Markdown · Fluent · Android XML