Skip to content

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.

Key facts
  • 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 .strings format 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.)

  1. Get started
  2. Import your .strings file
  3. Edit translations in the CAT view with translation memory, glossary, and style guide applied automatically
  4. Use bulk actions for AI / machine translation, then route results through a review workflow
  5. Export back to .strings per locale — or convert to .xcstrings, JSON, XLIFF, or any other supported format

Frequently asked questions

What is a .strings file?

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.

What is the difference between .strings and .stringsdict?

.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.

How do I edit .strings files?

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.

Should I migrate .strings to .xcstrings?

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.

What encoding do .strings files use?

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.

How do .strings files handle special characters?

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 */`.

Translate .strings — and migrate to .xcstrings when ready.
Import, edit with translation memory, glossary and AI, review, and export — all in one place.