iOS .strings Translation Files
Format, editor, and workflow for Apple's legacy iOS / macOS string-table format.
.strings files are Apple's plain-text translation format for iOS and macOS apps. Each entry is a simple "key" = "value"; pair, and each language has its own .strings file in a locale-specific folder (e.g. en.lproj/Localizable.strings, de.lproj/Localizable.strings). The runtime picks the right file based on the device language. .strings is the legacy format that String Catalogs (.xcstrings) replaces in Xcode 15+, but it remains supported and is still common in older projects.
- What it is: plain-text key/value translation file
- File extension:
.strings - Standard body: Apple
- Encoding: UTF-8 (modern); UTF-16 in older projects
- Locale folders:
<lang>.lproj/Localizable.strings - Plurals: not in .strings — use a separate
.stringsdict(or migrate to.xcstrings) - Used by: iOS, macOS, watchOS, tvOS apps (legacy and current)
What a .strings file looks like
A .strings file is a list of "key" = "value"; entries with C-style line and block comments. Placeholders use Foundation's printf-style format specifiers: %@ for objects, %d for integers, %1$@ for positional arguments:
// Localizable.strings (German)
// Reviewed by translator on 2026-04-12
"app.name" = "Mein App";
"welcome.title" = "Willkommen, %@!";
/* Login screen */
"login.username" = "Benutzername";
"login.password" = "Passwort";
"login.submit" = "Anmelden";
/* Errors */
"error.notFound" = "Seite nicht gefunden";
"error.forbidden" = "Zugriff verweigert";.strings vs .stringsdict vs .xcstrings
.strings— plain key/value pairs. One file per language, many files per project..stringsdict— XML property list for pluralized text. Used alongside .strings when count- or device-aware messages are needed. One per language..xcstrings— Apple's modern format (Xcode 15+, June 2023). One JSON file per app holds all keys, all languages, and all plural / device variations. Apple recommends migrating new projects to .xcstrings — see the xcstrings guide.
Editing .strings files
- Xcode editor: built-in syntax highlighting and per-language file management. Best for solo work.
- Cloud TMS platforms: Locize imports and exports the
.stringsformat directly; translators work in a CAT-style UI without touching the syntax. - Text editors: fine for spot fixes; watch for escaping (
\\",\\\\) and trailing semicolons.
Common .strings workflows
- Adding a language to an existing iOS app. Create
<lang>.lproj/Localizable.strings, copy the keys from the default, translate the values. Xcode picks them up automatically. - Translator handoff. Export the default .strings (or all locales) to a TMS, translate, import the resulting per-locale files back into the corresponding lproj folders.
- Migrating to xcstrings. Right-click a .strings file in Xcode → "Migrate to String Catalog". Xcode produces an equivalent .xcstrings preserving all translations.
- Pluralized strings. Pair .strings with .stringsdict for count-aware text — or migrate to .xcstrings, which holds plurals in the same file.
How to translate .strings files in Locize
Locize imports and exports .strings files preserving keys and comments. (For pluralized text, consider migrating to .xcstrings — Locize supports that format too.)
- Get started
- Import your
.stringsfile - Edit translations in the CAT view with translation memory, glossary, and style guide applied automatically
- Use bulk actions for AI / machine translation, then route results through a review workflow
- Export back to
.stringsper locale — or convert to .xcstrings, JSON, XLIFF, or any other supported format
Frequently asked questions
A .strings file is Apple's plain-text translation format for iOS and macOS apps. Each entry is a `"key" = "value";` pair. Each language has its own .strings file inside a locale-specific folder (e.g. `en.lproj/Localizable.strings`, `de.lproj/Localizable.strings`). The runtime picks the right file based on the device language.
.strings holds plain key/value pairs. .stringsdict (XML property list) holds pluralized text that depends on count or device. Apple's newer String Catalog format (.xcstrings, Xcode 15+) replaces the .strings + .stringsdict pair with a single JSON file that handles both — Apple recommends migrating new projects to .xcstrings.
Xcode's editor opens .strings files directly with syntax highlighting. For team workflows use a TMS — Locize imports and exports the `.strings` format; translators work in a CAT-style UI. Hand-editing in a text editor is fine for spot fixes but the format is sensitive to escaping.
For new projects targeting Xcode 15 / iOS 17 or later: yes. String Catalogs (.xcstrings) are Apple's recommended format and they collapse .strings + .stringsdict + per-language file proliferation into a single JSON file with built-in status tracking. Right-click a .strings file in Xcode → "Migrate to String Catalog" handles the conversion.
Modern Xcode reads .strings as UTF-8. Older Xcode versions defaulted to UTF-16 with a byte-order mark. If you see garbled non-Latin characters, check the file encoding in Xcode's File Inspector and convert to UTF-8.
Backslash is the escape character: `\\\"` for double quotes, `\\\\` for backslash, `\\n` for newlines, `\\t` for tabs. Both keys and values must be in double quotes; semicolons terminate every entry. Comments use `// line` or `/* block */`.