Home / ASO guides / Flutter app localization: step by step

Flutter app localization: step by step

Quick answer: Flutter app localization uses the flutter_localizations package and gen-l10n: add ARB files per language (app_en.arb, app_es.arb), enable generate in pubspec, and access strings via AppLocalizations.of(context). Add iOS supported locales to Info.plist, test RTL layouts, then localize your store listings separately.

How to localize a Flutter app, step by step

Follow these steps in order. Each one is something we do on client work.

  1. Add flutter_localizations and intl. Enable generate: true in pubspec.
  2. Create ARB files. app_en.arb and one per language.
  3. Use generated AppLocalizations. No hard-coded strings in widgets.
  4. Handle plurals and placeholders. ICU message syntax in ARB.
  5. Test RTL and long strings. Use Directionality and flexible layouts.
  6. Localize store listings too. Names, descriptions, screenshots per language.

Flutter app localization: key rules and context

Setup

  1. Add flutter_localizations and intl to pubspec.yaml; set generate: true.
  2. Create l10n.yaml pointing to lib/l10n.
  3. Add app_en.arb and other locales.
  4. 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

FilePurpose
l10n.yamlGenerator config
lib/l10n/app_en.arbTemplate strings
lib/l10n/app_xx.arbTranslations
Generated AppLocalizationsUsed 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.

AssetApp StoreGoogle Play
Name / titlePer localization, 30 charactersOne localized name per language, 30 characters
KeywordsKeyword field per localization, 100 bytesNo keyword field; localize the descriptions
DescriptionsDescription and promotional text per localizationShort and full description per language
ScreenshotsPer localization and device sizeLocalized graphic assets per language
FallbackPrimary language if not localizedAutomated 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

FAQ

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.

Ready when you are

Fix your listing this week.

One fixed price, delivered as copy and files you paste yourself. No calls, no account access.

$99 one-timeDelivered in 2–3 business days2 revisionsNo login needed
Questions? Email us
Rank higher. More installs.Want your app ranked and more installs?
Get HireASO