Mobile App Localization: The Complete iOS + Android Guide (2026)

By The strings.dev team · Last updated

Frequently asked questions

What's the difference between internationalization (i18n) and localization (l10n)?

Internationalization is the one-time engineering work of externalizing strings and making layout adapt to any language or text direction. Localization is the repeated, per-locale work of translating those strings and adapting formats. You must internationalize first — translation can't fix hardcoded strings or a layout that doesn't flex.

Should I use String Catalogs or the older .strings files for iOS?

For new apps in 2026, start with String Catalogs (.xcstrings) — Xcode manages them with a visual editor, per-string state tracking, and built-in plural and device variations. When exporting for translation, Xcode produces a native Xcode Localization Catalog (.xcloc) per language, which is the round-trip format strings.dev works with directly, no XLIFF conversion needed.

How do I handle plurals across languages?

Use the platform plural systems, which follow Unicode CLDR categories (zero, one, two, few, many, other). On iOS that's String Catalog plural variations; on Android it's <plurals> quantity strings. A target language may need categories your English source never defined — Arabic has six, Russian and Polish have several — so a good localization step generates the forms each locale actually requires.

How do I test localization before I have real translations?

Use pseudolocalization: replace source strings with accented, expanded, bracketed versions that stay readable while stressing your layout. It instantly reveals truncated buttons, hardcoded strings (anything that isn't pseudolocalized), and RTL layout breaks. Both Xcode and Android support pseudolocales natively — run them in CI on every build.

Can I automate app localization in my CI pipeline?

Yes. strings.dev exposes the translate-and-merge loop as per-project CLI scripts, a REST API, and the strings-mcp-server MCP package with a generated AI-skill prompt, so you can wire it into git hooks or a CI stage. A PR that adds new strings comes back with native translations, keeping localization in sync with your code instead of lagging behind releases.

Does app localization include my App Store or Google Play listing?

No — those are separate. strings.dev localizes in-app native strings only (.xcloc for Apple, strings.xml for Android). Your store listing metadata, descriptions, and screenshots are translated in App Store Connect and Google Play Console, not in your app's resource files. Keep the two tasks distinct.

Related

Automate your localization loop free