How to localize a Flutter app, step by step
Follow these steps in order. Each one is something we do on client work.
- Add flutter_localizations and intl. Enable generate: true in pubspec.
- Create ARB files. app_en.arb and one per language.
- Use generated AppLocalizations. No hard-coded strings in widgets.
- Handle plurals and placeholders. ICU message syntax in ARB.
- Test RTL and long strings. Use Directionality and flexible layouts.
- Localize store listings too. Names, descriptions, screenshots per language.
Flutter app localization: key rules and context
Setup
- Add flutter_localizations and intl to pubspec.yaml; set generate: true.
- Create l10n.yaml pointing to lib/l10n.
- Add app_en.arb and other locales.
- Configure MaterialApp with localizationsDelegates and supportedLocales. Docs: Flutter internationalization.
Plurals and placeholders. Use ICU syntax in ARB for plurals and gender, with placeholders typed in metadata.
Platform details. iOS needs CFBundleLocalizations in Info.plist so the App Store lists languages. Android picks resources automatically.
Store listings. Translate your App Store and Play listings with local keywords: localization keywords or Localization package.
Worked example (hypothetical)
This example is illustrative. The app is made up, and so are any numbers in it.
Imagine TaskBee adds Arabic. We'd add app_ar.arb, check that icons and paddings flip in RTL, and localize the App Store name, subtitle and keyword field and the Play title and descriptions.
Flutter localization files
| File | Purpose |
|---|---|
| l10n.yaml | Generator config |
| lib/l10n/app_en.arb | Template strings |
| lib/l10n/app_xx.arb | Translations |
| Generated AppLocalizations | Used in widgets |
Common mistakes
- Hard-coded strings. Can't translate.
- String concatenation. Breaks grammar.
- Ignoring RTL. Layouts flip.
- Forgetting store listings. Users never see the app.
If you want this handled for you, our pricing page lists every fixed package.
What you can localize in each store
Both stores let you localize the parts that drive search and conversion.
| Asset | App Store | Google Play |
|---|---|---|
| Name / title | Per localization, 30 characters | One localized name per language, 30 characters |
| Keywords | Keyword field per localization, 100 bytes | No keyword field; localize the descriptions |
| Descriptions | Description and promotional text per localization | Short and full description per language |
| Screenshots | Per localization and device size | Localized graphic assets per language |
| Fallback | Primary language if not localized | Automated Google Translate view if not translated |
How we measure the result
For Flutter app localization, judge each market on its own numbers. Filter App Store Connect and Play Console by country or region rather than looking at global totals. Compare impressions, page views and installs before and after the localized listing went live.
Checklist
Copy this list into your release notes or ticket and tick each item off before you ship.
- Packages added
- ARB files per locale
- Generated class used
- Plurals handled
- RTL tested
- Store listings localized
Sources
- Flutter docs: Internationalizing Flutter apps (accessed 26 October 2026)
- Apple: App Store localizations (accessed 26 October 2026)
- Apple App Store Connect Help: App information (accessed 26 October 2026)
- Apple App Store Connect Help: Platform version information (accessed 26 October 2026)
- Play Console Help: Create and set up your app (accessed 26 October 2026)
- Play Console Help: Translate and localize your app (accessed 26 October 2026)
- Apple Developer: Localization (accessed 26 October 2026)
Questions
What's an ARB file?
A JSON-based resource file for Flutter strings.
Do I need intl?
Yes, for formatting and gen-l10n.
Why doesn't iOS show my languages?
Add them to Info.plist.
RTL support?
Flutter handles direction; test layouts.
Do you localize Flutter apps?
Listings yes; in-app strings no.
Where do Flutter translations live?
In ARB files, one per locale, which Flutter turns into a generated AppLocalizations class.