Demonstrates localizing Flutter ARB (Application Resource Bundle) files with the Lingo.dev CLI (@lingo.dev/cli) push/pull flow. Message strings — including ICU plurals and placeholders — are translated, while metadata (@/@@ keys, description, placeholders) is preserved and @@locale is rewritten to each target.
Full walkthrough: lingo.dev/en/guides/mobile-app
lib/l10n/en.arb— source ARB (English)l10n.yaml— Fluttergen_l10nconfiguration.lingo/config.json— Lingo.dev CLI configuration (flutterformat)
Note on file naming: this example uses locale-as-filename ARB files (
en.arb,es.arb, …) rather than Flutter's defaultapp_en.arb. That keeps the locale the last path segment, which is how the CLI derives target paths.l10n.yamlsetstemplate-arb-file: en.arbsoflutter gen-l10npicks it up.
# 1. Install the CLI (or prefix commands with `npx`)
npm install -g @lingo.dev/cli
# 2. Authenticate and link this repo to your engine
lingo login
lingo link
# 3. Translate changed source into every locale
lingo push --waitTranslations are committed next to the source as lib/l10n/<locale>.arb. This repo ships fully translated. After you edit en.arb, lingo push --wait translates only the delta. To bootstrap a brand-new locale, add it to .lingo/config.json and run lingo push --backfill-missing.
lingo push parses the ARB, diffs it against .lingo/lock.json, and translates only the message strings through your linked engine. Metadata is preserved: @key objects (description, placeholders), placeholder tokens like {name}, and ICU plural structures ({count, plural, …}) stay intact — only the human-readable text changes. The @@locale global is rewritten to each target locale, and @@/@-prefixed keys otherwise pass through untouched. Results are written to lib/l10n/<locale>.arb.
Run flutter gen-l10n afterward to regenerate the typed AppLocalizations Dart classes from the translated ARB files.
Want translations on every push or PR without running the CLI yourself? See the CI/CD Workflows guide — the Lingo.dev GitHub App translates automatically once installed.
- Source:
en - Targets:
es,fr,de