iOS Localization File Formats Explained: .xcstrings vs .strings vs .xcloc
If you start localizing an iOS app today, you’ll quickly encounter multiple file formats:
.strings.stringsdict.xcstrings.xcloc.xliff
Many developers struggle to understand which format is the source of truth and which ones are simply exchange formats.
This guide explains how modern iOS localization workflows use these formats together and how to structure a workflow that scales as your app grows.
The Modern iOS Localization Stack
Apple has gradually shifted localization workflows toward String Catalogs (.xcstrings).
Today the stack typically looks like this:
| Purpose | Format |
|---|---|
| Source localization file | .xcstrings |
| Legacy storage | .strings |
| Translation export bundle | .xcloc |
| Translation interchange | .xliff |
The key concept:
.xcstrings is where your translations live.
.xcloc and .xliff are how translations move between tools.
.xcstrings: The Modern Source of Truth
Apple introduced String Catalogs to replace multiple legacy localization files.
A single .xcstrings file can now contain:
- all translations
- pluralization rules
- device variants
- metadata
- translator comments
This replaces the older combination of .strings and .stringsdict.
If you're setting up localization today, start with a string catalog as described in the
Xcode localization guide.
Benefits of .xcstrings:
- structured JSON format
- better merge behavior in Git
- built‑in context comments
- easier automation pipelines
.strings: The Legacy Format
Before Xcode 15, localization used Localizable.strings.
Example:
“login_button” = “Log In”;
Pluralization required a separate .stringsdict file.
While still supported, .strings lacks metadata and workflow features.
For most modern projects, migrating is recommended.
See the migration guide here:
.xcloc: Translation Exchange Bundles
.xcloc files are not primary localization files.
Instead they are packages used when exporting translations from Xcode.
Typical workflow:
- Export localization from Xcode
- Send
.xclocbundle to translators - Import updated
.xclocfiles - Xcode updates your
.xcstrings
This keeps the repository clean while enabling collaboration with translators or localization tools.
.xliff: External Translation Format
.xliff is a standardized translation format used by many localization platforms.
You’ll see .xliff when:
- working with translation agencies
- using localization SaaS platforms
- integrating with enterprise translation pipelines
However, .xliff usually does not live in your repository long‑term.
It acts as a transport format between tools.
iOS vs Android Localization Formats
Many teams ship both iOS and Android apps.
The typical mapping looks like this:
| iOS | Android |
|---|---|
.xcstrings |
strings.xml |
.xcloc |
translation platform export |
.xliff |
.xliff |
Android uses XML resource files that support plurals and placeholders.
String Catalog’s localization pipeline supports both formats simultaneously so translations stay synchronized across platforms. String Catalog Docs
Recommended Localization Workflow
A practical workflow for modern mobile teams looks like this:
- Store translations in
.xcstrings - Commit them to Git
- Export
.xclocfor translators - Import updates back into the catalog
- automate translation updates through CI or localization tooling
This ensures:
- translations remain version controlled
- changes are visible in pull requests
- translators can work outside the codebase safely
Improving Translation Accuracy
File format alone does not guarantee quality.
The biggest improvement usually comes from better context comments.
Recent versions of Xcode even support generating comments automatically to help translators understand each string’s purpose.
Learn more here:
Key Takeaways
.xcstringsis the modern localization source file.stringsis legacy and being phased out.xclocbundles are used for translation exchange.xliffconnects localization tools and translation services- strong workflows combine catalogs, version control, and automation
Understanding these formats makes it much easier to build a localization workflow that scales with your app and your team.
Related Articles
-
Xcode Localization Guide
https://stringcatalog.com/articles/Xcode-app-localization-guide -
Migrate from
.stringsto String Catalog
https://stringcatalog.com/articles/migrate-strings-file-to-string-catalog-xcode -
Accurate Translation Comments in String Catalogs
https://stringcatalog.com/articles/accurate-translation-comments-string-catalogs-xcode-26