iOS localization #️⃣

Apple’s localization system organizes translatable content in language-specific .lproj folders, or in a single .xcstrings String Catalog since Xcode 15. Managing those files across a growing list of languages is where it stops being fun: plural rules differ per language, translator handoffs overwrite each other, and every typo fix waits for an App Store review. Localazy automates iOS app translation with proper localization workflows, from integration to human review.

How Localazy works with iOS #️⃣

Your app can be integrated with your Localazy project in two ways. Use the Localazy CLI for build-time file sync and more flexibility or the Swift SDK to enable over-the-air translation delivery.

Localazy CLI: file sync for every Apple format #️⃣

The CLI uploads source strings and downloads completed translations back into your project structure, and it drops into Xcode build phases or any CI/CD pipeline. All standard Apple localization formats are supported:

  • Xcode String Catalogs (.xcstrings) - the unified modern format introduced in Xcode 15.
  • XLIFF - Xcode’s export format, including Apple’s extension for plurals.
  • Other formats
    • .strings - classic key-value pairs for interface text.
    • .stringsdict - plural rules and formatted variable strings.
    • .plist - structured content including nested dictionaries and arrays.

Swift SDK: over-the-air translation updates #️⃣

The Localazy Swift SDK delivers approved translations straight to users’ devices.

  • No release needed - fix a translation in production, approve it on the platform, and users see the corrected string on next app start. No App Store review, no version bump.
  • Native integration - drops into your Xcode project; your localization keys and usage stay as they are.
  • Always current - new languages and updated strings reach existing installs without shipping a build.

Helpful Localazy features for iOS translation #️⃣

Plurals by the CLDR standard #️⃣

Upload English with two plural forms, and Localazy generates a correctly structured plural strings for every target language: Czech with three categories, Arabic with six, each per CLDR rules.

Placeholder protection #️⃣

Format specifiers like %@, %d, and %1$@ are highlighted and validated throughout translation, so broken placeholder syntax never reaches a downloaded file.

iOS + Localazy: Quick start guide

Learn how to use iOS 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

OTA (Over-The-Air) updates allow you to deliver new translations to your mobile app users without requiring an app store update. Once you integrate our SDK into your Android or iOS app, it creates a connection between your app and Localazy’s delivery network. When you publish new translations on the Localazy platform, they’re automatically pushed to your CDN delivery point, from where they’re fetched by your users’ apps.

The SDK handles all the complexity of requesting, downloading, and integrating the translations into your app’s UI. It also manages caching for offline use and only downloads what’s needed to minimize bandwidth usage. This means that fixing a translation error or launching a new language can happen immediately, without waiting for app store review processes.

Last updated: 27/03/2025

Setting up OTA updates is straightforward with our SDKs. For Android, add the Localazy Gradle plugin to your build configuration and include a few lines of initialization code in your application class. For iOS, install the Localazy Swift SDK via Swift Package Manager or CocoaPods and add initialization code to your app delegate.

After integration, configure your project in Localazy to enable OTA delivery. This involves activating the service in your project settings.

Once set up, you can control the delivery through Release Tags in the platform, deciding when translations become available to your users.

Last updated: 27/03/2025

Václav Hodek founded Localazy in 2020, and its headquarters are located in Brno, Czech Republic.

Initially, the company focused on helping Android app developers localize their apps with the help of crowdsourced translations. Since then, it has grown into a full translation management platform serving hundreds of software teams of all sizes across multiple industries.

Fun fact: While the official Localazy headquarters are in Brno, the team has operated in full-remote mode since its inception during the pandemic to this day.

Last updated: 31/03/2026

The name combines “localization” with “lazy,” which is a nod to the developer mindset of automating repetitive work instead of doing it manually. 😅

If you’ve ever copy-pasted translations between spreadsheets or created string files by hand for each language, you know exactly why “lazy” is a compliment here. The idea is simple: let the platform handle the tedious parts of localization so you can focus on building your product.

Last updated: 18/03/2026

Václav Hodek, Localazy’s founder and CEO, was an independent developer building and translating his fairly successful Android app into 30+ languages when he ran into the same frustration many developers face: existing localization tools didn’t fit the way he worked.

The solutions he tried were either too clunky, too expensive, or required too much manual effort just to get translations into his projects. So he built a platform from a developer’s perspective, prioritizing automation, CLI-first workflows, and clean API integration. Localazy launched in April 2020 as an MVP for Android app localization and grew from there into the fully-featured translation management platform for software teams it is today.

Last updated: 31/03/2026

The Localazy platform is developed and maintained by a small, focused team of about 20 people. If you count the professionals in our translator network & content contributors, the number gets closer to a hundred.

We’re fully remote, mostly based in Europe (from 🇪🇸 Spain to 🇪🇪 Estonia, with the majority of the team located in the heart of Europe: 🇨🇿 Czech Republic).

Everyone works closely together across product development, engineering, and customer support. Because we’re a compact team building and using the platform ourselves, you’ll often talk to people who actually know the product inside and out and can help solve your problem directly, not just pass you along to someone else.

Last updated: 31/03/2026
Try the iOS integration with your own content!

Automate your localization with Localazy today!

Sign up now