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

Translate your Flutter app's .arb files, then read every line back before you ship

Upload lib/l10n/app_en.arb — KAERIS translates all 46 languages, then reads each line back to you in your own language and flags the ones worth a second look. Catch the shaky ones before release, not after. @@locale, @key metadata and {count, plural, ...} stay intact.

Translate your .arb file $ pip install kaeris
ARB-native @@locale + @key metadata preserved ICU plural/select preserved gen-l10n ready No account needed
Localize your Flutter app in 3 steps
1

Upload app_en.arb

Or run kaeris init --preset flutter-arb to point the CLI at lib/l10n/ directly.

2

Pick locales

46 languages, mapped straight to Flutter's supportedLocales.

3

Ship

Drop the output back into lib/l10n/ and run flutter gen-l10n.

Real .arb, metadata and all

Before → after

lib/l10n/app_en.arb
{
  "@@locale": "en",
  "welcome": "Welcome back, {name}!",
  "cartItemCount": "{count, plural, one{You have {count} item} other{You have {count} items}}",
  "@cartItemCount": {
    "description": "Shown on the cart screen",
    "placeholders": { "count": { "type": "int" } }
  }
}
lib/l10n/app_de.arb
{
  "@@locale": "de",
  "welcome": "Willkommen zurück, {name}!",
  "cartItemCount": "{count, plural, one{Du hast {count} Artikel} other{Du hast {count} Artikel}}",
  "@cartItemCount": {
    "description": "Shown on the cart screen",
    "placeholders": { "count": { "type": "int" } }
  }
}

The @cartItemCount metadata block — description and placeholder type — is copied through untouched. Only translatable string content moves.

Built for ARB & ICU

ARB-native

Reads and writes real .arb@@locale and every @key metadata block (description, placeholder types) survives untouched.

ICU plural/select preserved

{count, plural, ...} and {gender, select, ...} blocks are preserved verbatim and translated as one unit — never string-mangled.

gen-l10n ready

Output drops straight into lib/l10n/ — no post-processing before flutter gen-l10n.

One CLI command

kaeris init --preset flutter-arb scaffolds locale detection from your existing ARB folder.

Why KAERIS
Placeholder-safe{count} / {name} is never dropped or mistranslated.
Format-native — real .arb out, metadata and ICU intact, not a flattened wrapper.
Verify-meaning QA — every string is back-translated to catch meaning drift before you ship.
No account needed — drag & drop free up to 10,000 characters, or use the CLI/API.
Honest flat pricing — no per-seat, no per-language multiplier. See plans

Beyond .arb, KAERIS speaks all 11 formats — JSON, YAML, .strings, .po, ARB, Android XML, CSV (incl. Godot/Unity), XLIFF, .properties, .resx and Mozilla Fluent (.ftl) — same placeholder-safe engine across your whole stack.

Ship Flutter in every market

46 languages, ARB-native, ICU-safe. Free to start, no account required.

$ pip install kaeris
$ kaeris init --preset flutter-arb
Translate your .arb files now