Flutter .arb
Flutter · .arb · ICU · 46 languages · Free

Translate your Flutter .arb files, without breaking the ICU syntax

Drop in your app_en.arb. KAERIS translates all 46 languages while keeping ICU {count, plural, …} and {name} placeholders exactly intact, and reads each line back so a shifted meaning never reaches your users.

Translate your file → $ pip install kaeris
ICU plurals kept intact {placeholders} preserved @metadata untouched gen-l10n ready No account needed
What breaks in Flutter .arb — and how KAERIS handles it

ICU that still parses

{count, plural, one {# item} other {# items}} is easy for an AI to mangle. KAERIS treats the ICU structure as protected and only translates the human-readable parts, so flutter gen-l10n still compiles.

Placeholders stay put

{name}, {price} and every interpolation survive verbatim — and if one is ever dropped, read-back flags it as a fact, not a guess.

Metadata left alone

@@locale and your @key description/metadata blocks are preserved so your tooling and context stay intact.

Real Flutter .arb, round-tripped

Before → after

app_en.arb
{
  "itemCount": "{count, plural, one {1 item} other {{count} items}}",
  "@itemCount": { "placeholders": { "count": {} } }
}
app_de.arb
{
  "itemCount": "{count, plural, one {1 Artikel} other {{count} Artikel}}",
  "@itemCount": { "placeholders": { "count": {} } }
}
From file to shipped in 3 steps
1

Drop your .arb file

Upload it as-is, or run pip install kaeris and translate from your terminal or CI.

2

Pick languages & verify

Choose from 46 languages. Leave read-back on to catch meaning drift, lost placeholders and overflow.

3

Ship the .arb back

Download one .arb per language, structure intact — or let the GitHub Action open a PR when new keys land.

Translate your .arb now

Free, no account. Read every line back in your own language.

Drop your .arb file →

See the read-back benchmark · CLI & GitHub Action