Skip to content

Xcode 15 String Catalogs Replace .strings and .stringsdict

Xcode 15 introduces String Catalogs, a visual editor for managing localized strings that replaces legacy .strings and .stringsdict files.

The Legacy Localization Workflow

Working with .strings and .stringsdict files has always been one of the rougher edges of Apple development. Plain text key-value files are easy to get wrong – missing semicolons, mismatched keys across languages, no way to see translation progress at a glance. And .stringsdict files, used for pluralization rules, are XML-based plist files that are notoriously difficult to author by hand.

What String Catalogs Bring

Xcode 15 introduces a new .xcstrings file format called String Catalogs. It replaces both .strings and .stringsdict with a single file that comes with a dedicated visual editor.

The String Catalog editor in Xcode 15 showing translations across multiple languages

The key improvements are substantial:

Visual editor – All localizable strings are displayed in a table with columns for each language. You can see and edit translations inline without switching between files or using external tools.

Translation progress tracking – Each language shows a completion percentage. At a glance, you can tell which languages need attention and which strings are still untranslated.

Automatic string extraction – Xcode scans your Swift code and automatically discovers strings that need localization. New strings appear in the catalog without any manual registration step.

Built-in migration – There is a migration path from existing .strings and .stringsdict files. Right-click your existing localization files and Xcode offers to convert them to the new format.

Practical Impact

For projects with even a handful of supported languages, this is a significant quality-of-life improvement. The visual editor alone eliminates an entire class of formatting errors. Combined with automatic extraction, it means fewer forgotten strings and a clearer picture of your localization status across the entire project.

If you are starting a new project on Xcode 15, String Catalogs are the default. For existing projects, the migration is straightforward and well worth doing.

Found this helpful? Follow me on Bluesky and Mastodon for more Swift tips and indie dev updates.