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

Translate your Flutter app's .arb files without losing a single ICU rule

Upload lib/l10n/app_en.arb, pick locales, and get back app_de.arb, app_ja.arb… — @@locale, @key metadata and {count, plural, ...} all 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 in your cart} other{You have {count} items in your cart}}",
  "@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 im Warenkorb} other{Du hast {count} Artikel im Warenkorb}}",
  "@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 translated branch-by-branch, not 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.

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 →