1. Choose markets
Use App Store Connect and Play Console downloads by country, plus competition. Start with 2–3.
2. Prepare the app
- iOS: String Catalogs in Xcode (Apple: Localization).
- Android: strings.xml per locale (Android).
- Flutter: ARB files (Flutter localization).
3. Translate and test
Give translators screenshots and context. Test text expansion (German), RTL (Arabic), and date formats.
4. Localize the listing
Separate name, subtitle and keywords per locale: localization keywords. This is what our Localization package covers.
5. Measure
Compare installs and conversion by country before and after.
How to localize an app, step by step
Follow these steps in order. Each one is something we do on client work.
- Choose markets with data. Use your App Analytics and Play Console country data.
- Externalise strings. No hard-coded text in code.
- Translate with context. Give translators screenshots and character limits.
- Localize store listings. Name, subtitle or short description, keywords, screenshots.
- Test layouts. Longer languages and right-to-left scripts.
- Measure per market. Compare conversion before and after.
Worked example (hypothetical)
This example is illustrative. The app is made up, and so are any numbers in it.
Say TripTally sees growing traffic from Brazil. We'd localize the app and store listing into Portuguese (Brazil), research local search terms rather than translating English ones, and rebuild screenshots with Portuguese captions.
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
Measure localization per market, not globally. In App Store Connect and Play Console, filter by country or region and compare impressions, page views and installs before and after the localized listing went live. Look at search terms too: a new localization should start bringing impressions from local-language searches. If page views rise but conversion doesn't, the screenshots or captions probably still feel foreign. Fix those before you add another language.
Common mistakes
- Machine-translating keywords. Local terms differ.
- Hard-coded strings. Can't translate.
- Ignoring layout. Text overflows.
- No measurement. Can't tell if it worked.
Checklist
Copy this list into your release notes or ticket and tick each item off before you ship.
- Markets chosen with data
- Strings externalised
- Translators have context
- Listings localized
- Layouts tested
- Per-market tracking
Sources
- Apple: Localization (accessed 26 October 2026)
- Android Developers: Localize your app (accessed 26 October 2026)
- 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)
Questions
Which languages first?
Wherever you already get downloads and competition is lower.
Machine translation OK?
For drafts; have humans review.
Listing without app translation?
Possible, but don't promise language support.
How much does it cost?
Our listing localization is $99 for 3 markets.
Do you translate the app?
No, listing only.
Can I localize only the store listing?
Yes. Both stores let you localize listings separately, but users expect the app to match once they open it.