Xcode String Catalogs localization

Xcode String Catalogs (.xcstrings) are Apple’s modern localization format introduced in Xcode 15, replacing legacy .strings and .stringsdict files. A String Catalog consolidates everything into a single JSON-based file per target (string keys, translations, pluralization rules, and device-specific variations). Translate your .xcstrings files with Localazy and keep that single-file convenience through the whole translation workflow.

How Localazy works with Xcode String Catalogs

Upload your .xcstrings file through the Localazy CLI, translate on the platform using Localazy AI with real human review, and download a String Catalog that plugs straight back into Xcode’s build process.

  • Complete .xcstrings support - keys, translation units, and variations processed per Apple’s String Catalog specification.
  • Plural rules preserved - language-specific pluralization patterns handled correctly for every target language.
  • Device variations managed - iPhone, iPad, Mac, Apple Watch, Apple TV, and Vision Pro variants travel through translation intact.
  • Substitutions protected - variable placeholders and formatting specifications stay untouched.
  • Translation states maintained - status indicators are kept consistent throughout the workflow.

Helpful Localazy features for .xcstrings translation

CLI automation

A short localazy.json pointing at MyApp/Localizable.xcstrings is all the configuration needed. Run localazy upload and localazy download locally or in CI, and translation sync becomes part of the build.

Format conversions

Migrating gradually, or sharing strings beyond Apple platforms? Localazy converts bidirectionally between .xcstrings and its other supported formats, so one source of truth can feed legacy .strings targets or an Android sibling app.

Plural accuracy per language

Plural categories differ across languages, and String Catalogs encode them explicitly. Localazy generates the correct plural forms for each target language automatically, so the catalog you download compiles cleanly.

Xcode String Catalogs + Localazy: Quick start guide

Learn how to use Xcode String Catalogs with Localazy. Set up your localization workflow in minutes!

Read the guide

AI-driven translation
with human control

Bring your whole team inCollaborate with your colleagues, clients, or users without seat limits.
Establish a source of truth for your contextManage terminology, instructions, and style guides all in one place.
Let Localazy AI handle the first draftAutomatically generate new translations based on your context.
Get human reviewers to keep an eye on qualityHave our trusted native speakers review your translations as you go.
Keep iOS and Android translations in sync

Keep iOS and Android translations in sync

Manage translations for both platforms from one dashboard. With proper configuration, both iOS and Android get the same translation automatically - no more version mismatches between platforms.

Localazy CLI: Automated localization for your project

Localazy CLI: Automated localization for your project

Designed for development teams, Localazy CLI provides advanced i18n automation capabilities to manage translations across your entire pipeline. Integrate  your project with Localazy CLI & align it to your current CI/CD workflows.

Try Localazy with a 14-day trial!

Sign up now and start translating!

Start now

Frequently Asked Questions

A String Catalog in Xcode is a centralized file for managing localized strings in your iOS or macOS app. Instead of juggling multiple .strings files, a String Catalog stores all translations in one place, making it easier to add languages, keep translations consistent, and update your app’s user interface text.

How to create a String Catalog in Xcode:

  1. Open your project in Xcode.
  2. In the Project Navigator, right-click on your project folder (or the group where you want to keep the catalog).
  3. Choose New File… and then under Resource, select String Catalog.
  4. Name your file (e.g., Localizable.xcstrings) and click Create.

How to configure a String Catalog:

  1. Select the new .xcstrings file in the Project Navigator.
  2. In the editor, you’ll see a table-like view where you can add keys (string identifiers) and provide translations for each supported language.
  3. To add more languages, go to your project settings, select the Info tab, click Localizations, and enable the languages you want. The new languages will appear in the catalog automatically.
  4. Use the Value column for your source language, and fill in the translations for other languages in their respective columns.

When you run the app, Xcode automatically picks the correct string based on the user’s device language settings.

Using Localazy with String Catalogs: Instead of managing translations manually inside Xcode, you can connect your .xcstrings file to Localazy.

  • Upload your source language to Localazy. You can do this manually in the app interface or — to speed up your workflow — use the Localazy CLI to upload files with a single command, enabling automated integration with your build or deployment process. For example:
localazy upload

This command uploads your latest .xcstrings file to Localazy automatically, so you don’t need to manually handle files every time.

Once your source is in Localazy, you can choose how to translate your project:

  • Translate on your own or invite contributors and use our built-in suggestion system.
  • Translate quickly in bulk, using machine translation or Localazy AI with context-aware results. This is ideal for first iterations or localization testing.
  • Automate human translations with Continuous Localization. After your Localazy integration is set up, you can request translations from our professional linguists and have your projects translated automatically. The service works proactively, so you can check in only occasionally to monitor progress.

When all translations are complete, download ready-to-use .xcstrings files for all supported languages.

localazy download

This way, Localazy keeps your String Catalog in sync across all languages, reduces manual editing, and ensures faster, consistent localization.

Last updated: 16/10/2025

The key benefits include:

  • A centralized view of all translations.
  • Easier tracking of missing or outdated strings.
  • Built-in support for pluralization and variants.
  • Reduced errors compared to manually editing multiple .strings files.

Xcode’s String Catalog is a replacement for traditional .strings files, designed to make localization more organized and efficient by consolidating all translations into a single, user-friendly interface.

For example, rather than maintaining separate files for source and target languages, a String Catalog groups them together. You can instantly see all language variants of a string side by side, making it faster to spot gaps or errors. This also helps developers and translators easily manage keys, track missing translations, and avoid inconsistencies.

With the Xcode String Catalog integration into Localazy, the process becomes even smoother:

  • Developers push source strings to Localazy directly from the catalog.
  • Professional translators, machine translation, AI, or your translator community can handle the localization.
  • Completed translations sync back into the catalog automatically, keeping everything organized and up to date without extra manual steps.

This integration eliminates tedious file handling and makes scaling to multiple languages faster, more reliable, and less error-prone.

Last updated: 16/10/2025

Pluralization and text variations are essential for natural-sounding translations. Different languages use different rules — for example, English typically distinguishes between singular and plural (“1 file” vs. “2 files”), while other languages, like Polish or Arabic, have three or more plural forms.

With Xcode’s String Catalog, you can define plural and variant strings directly within the catalog instead of creating multiple separate keys. For example, you might create a single entry for FileCount that includes:

  • English: one = "%d file", other = "%d files"
  • Polish: one = "%d plik", few = "%d pliki", many = "%d plików", other = "%d pliku"

The catalog ensures these rules are applied consistently across all supported languages.

Variations can also be defined for context, such as different messages depending on gender or device type. This keeps everything structured in one place and avoids the confusion of multiple scattered .strings entries.

With Localazy’s integration, pluralization and variations become even easier to manage:

  • Localazy automatically understands the plural forms required by each language.
  • Translators see the proper plural categories (e.g., “one,” “few,” “many”) with clear context, reducing mistakes.
  • Localazy extracts context from XML comments and catalog metadata to give translators more guidance.
  • Translations sync seamlessly back into the String Catalog, ensuring all plural forms and variations are correctly preserved.

This combination makes plural handling smooth, efficient, and reliable — especially when scaling your app to multiple languages.

Last updated: 02/10/2025

When working with multiple languages in Xcode’s String Catalog, good organization and consistency are key. Here are some best practices to follow:

  1. Keep a clear source language

Always start with a complete and well-structured source language. This makes it easier to track missing translations and maintain consistency.

  1. Use descriptive keys

Instead of generic names like label1, use meaningful keys such as LoginButtonTitle. This helps translators and developers understand the context.

  1. Take advantage of pluralization and variations

Define plural forms and variations (e.g., gender, device type) directly in the catalog to avoid hardcoding conditions in your app logic. For example:

  • English: one = "%d comment", other = "%d comments"
  • Czech: one = "%d komentář", few = "%d komentáře", other = "%d komentářů"
  1. Add comments and context

Use the catalog’s description fields or developer comments to provide translators with context. This reduces ambiguity and improves translation quality.

  1. Regularly sync and validate

Keep all language versions up to date and validate them during development. Missing or outdated translations can break the user experience.

Managing multiple languages with Localazy

Localazy makes handling multiple languages smoother and error-free:

  • Automatically extracts comments and context from String Catalogs, giving translators clear guidance.
  • Provides built-in plural rules for each language, so translators know exactly what forms are required.
  • Syncs translations seamlessly between Xcode and Localazy with the Localazy CLI, keeping all languages aligned.
  • Supports pre-translation via machine translation, Localazy AI that understands context, and professional translators to minimize manual work.
  • Tracks progress across all languages, so you instantly see which ones are complete or missing.

With these practices and Localazy’s automation, your String Catalogs stay consistent, well-structured, and ready for global audiences.

Last updated: 16/10/2025

Over time, your project’s .xcstrings files may accumulate unused or outdated keys that can clutter the localization process and confuse translators. Cleaning them up keeps your String Catalog organized and efficient.

Best practices for removing unused strings:

  1. Check references in your code Before deleting any string, verify that it’s no longer used in your source code. Xcode’s “Find in Project” is a quick way to search for references.

  2. Use Xcode’s String Catalog editor

  • Open your .xcstrings file in Xcode.
  • Look for strings marked as unused (Xcode often flags these).
  • Remove them directly in the catalog to keep all language variants consistent.
  1. Delete carefully across all languages When you remove a key from the source language, make sure to also remove it from all other language entries in the catalog to avoid mismatches.

  2. Keep version control in mind Always commit your .xcstrings changes in Git (or another Version Control System - VCS) so you can easily revert if something breaks after cleanup.

With the xcstring integration in Localazy:

  • Keys deleted from your source file are detected automatically during upload.
  • Removing a string in your source .xcstrings ensures it’s also cleaned up across all target languages in Localazy. If the removed string — referred to as a deprecated key in Localazy terminology — later reappears in your source file during an upload, it is restored to the active state with all associated data (context, translations, contributors, etc.).
  • Translators see only the active, relevant strings, avoiding wasted effort on outdated content.

This way, your localization workflow stays clean, consistent, and free from unnecessary clutter.

Last updated: 02/10/2025
Try the Xcode String Catalogs integration with your own content!

Automate your localization with Localazy today!

Sign up now