Apple users live in more than 170 App Store storefronts, and they expect apps to speak their language. The good news is that iOS has some of the best localization tooling of any platform, especially since Apple introduced String Catalogs. The bad news is that small mistakes in code, layout or workflow still cause truncated buttons, wrong plurals and English strings in the middle of a translated app. This guide walks through iOS localization from the first string to the App Store.
What Is iOS Localization?
iOS localization is the process of adapting an iPhone, iPad, Mac, Apple Watch or Vision Pro app for other languages and regions. It covers user interface text, plurals, dates and numbers, images, Info.plist strings such as permission prompts, and App Store metadata. It is one part of broader app localization and software localization.
Step 1: Prepare Your Xcode Project
In your project settings, add the languages you plan to support under Localizations. Make sure your base development language is set correctly and that storyboards and XIBs, if you still use them, rely on Auto Layout so text can grow. SwiftUI views adapt to longer strings more naturally, but fixed frames still truncate.
Step 2: Use String Catalogs
String Catalogs (.xcstrings files), introduced with Xcode 15, replace the older combination of .strings and .stringsdict files. Xcode scans your code at build time, finds localizable strings and adds them to the catalog automatically, with a visual editor showing translation progress per language. Apple's documentation on localizing and varying text with a String Catalog covers every option.
Mark strings as localizable
In SwiftUI, string literals in Text, Button and Label are localizable by default. In other code, use String(localized:) with a comment that explains the context for translators. Avoid building sentences by concatenating fragments; use a single string with interpolated variables instead.
Handle plurals and device variations
String Catalogs let you vary a string by plural category (zero, one, two, few, many, other) and by device. Languages such as Russian, Polish and Arabic need several plural forms, so never hard code "1 item" versus "items" logic in Swift.
Localize Info.plist and permission prompts
Camera, location and notification permission messages live in InfoPlist strings and must be translated too. An English permission prompt in a localized app lowers acceptance rates.
Step 3: Format Dates, Numbers and Currency Correctly
Use Foundation formatters such as Date.FormatStyle, NumberFormatter and the formatted() APIs with the user's locale. Never format dates or prices as plain strings. The same applies to measurement units, names and addresses, which vary by region.
Step 4: Export for Translation
Use Product, Export Localizations in Xcode to generate an .xcloc package per language. Inside is a standard XLIFF file plus context such as screenshots and comments. XLIFF is the format every professional translation tool understands; our article on XLIFF files and CAT tools explains why it matters.
Upload the XLIFF to a translation management system. There, translation memory reuses approved strings from previous releases, an AI engine drafts new ones, and translators review them in a CAT editor that protects placeholders like %@ and %lld. When translations are ready, import the files back with Product, Import Localizations.
Step 5: Test Before You Ship
- Pseudolanguages: in your scheme options, run the app with the double length pseudolanguage to find truncation, and the right to left pseudolanguage to check mirroring.
- Run in each language on simulators and real devices, including the smallest screen you support.
- Dynamic Type: test large text sizes together with long languages such as German.
- Screenshots: use UI tests to capture localized screenshots for review and for the App Store.
See our full guide to localization testing for a checklist that works across platforms.
Step 6: Localize Your App Store Listing
In App Store Connect, add localized name, subtitle, keywords, description, promotional text, screenshots and preview videos for each language. Treat keywords as local SEO: research what people actually search for in each market rather than translating English keywords literally. Update the localized "What's New" text with every release.
Keep Translations in Sync With Releases
iOS teams often release every one or two weeks. Manual export and import before each release becomes a bottleneck. Automate it: push new strings from your repository to the TMS on every merge, translate in parallel with development, and pull completed languages before the release branch is cut. This is continuous localization, powered by workflow automation. If you also ship on Android, the same workflow covers both platforms; see our Android localization guide.
Common iOS Localization Mistakes
- Concatenated strings that cannot be translated grammatically.
- Missing comments, leaving translators guessing what "Done" or "Back" refers to.
- Fixed width labels and buttons that truncate in German or French.
- Forgetting InfoPlist permission strings and push notification text.
- Translating the app but not the App Store screenshots.
How WordBeam Helps iOS Teams
WordBeam imports Xcode XLIFF and String Catalog exports, keeps format specifiers and plural variations intact, and gives translators comments and context for every key. Glossaries keep feature names consistent between your app, website and support content, and automated QA checks catch missing placeholders and length issues before you import. Manage all your UI translations in one place and start free.
Frequently Asked Questions
What is a String Catalog in Xcode?
A String Catalog is an .xcstrings file that stores all localizable strings, translations, plural variations and device variations of an app in one place, with a visual editor in Xcode.
How do I send iOS strings to translators?
Use Product, Export Localizations in Xcode to create .xcloc packages containing XLIFF files. Translators or a TMS work on the XLIFF, and you import the translated files back into Xcode.
How many languages should my iOS app support?
Start with the markets where you already see downloads, revenue or App Store impressions, then add languages as your workflow and budget allow.