String Catalog
May 09, 2024

Xcode Localization

Learn how to localize your iOS, macOS, visionOS, watchOS, and tvOS apps with this step-by-step Xcode guide. Export, upload, and review translations for 40+ languages.

If you build apps for iOS, macOS, visionOS, watchOS, or tvOS, Xcode’s String Catalog is the fastest way to keep every language in sync.
This guide works with Xcode 15 or later. We’ve refreshed it for Xcode 26, which adds optional AI-generated context comments—handy, but not required.


Prerequisites

  • Xcode 15+ (Xcode 26 recommended if you want auto-generated comments)
  • A free String Catalog account
  • Either
    • a GitHub repository you can connect or
    • exported .xcstrings / .xcloc files you’ll upload manually

Step 1 – Create a String Catalog

  1. In Xcode choose File ▸ New ▸ File ▸ String Catalog.
  2. Build once so Xcode harvests every string, e.g.
   Text("Show Badges", comment: "Toggle visibility of the badge list")
  1. (Xcode 26 only) Turn on automatic comments at Xcode ▸ Settings ▸ Editing ▸ Automatically Generate String Catalog Comments.

Setting up a String Catalog


Step 2 – Connect String Catalog App

Option A – GitHub Integration (recommended)

  1. In your String Catalog dashboard click Connect GitHub.
  2. Authorize our GitHub App and select the repo you want localized.
  3. First sync pulls your .xcstrings automatically; future commits trigger new syncs.

Connect GitHub Repository

Option B – Manual Upload

  1. In the dashboard click Upload Files and drop in your .xcstrings files.
  2. Each time you add or change strings in Xcode you’ll repeat this upload step.
  3. After translations are ready you can download the updated .xcstrings bundle back to Xcode.

Step 3 – Add Languages

  1. Click Add Languages.
  2. Choose from 40+ locales.
    Free accounts can add one language once as a trial; continuous sync starts on paid plans.

Language picker


Step 4 – Translate with Context

  • AI reads every context comment (manual or auto-generated) for high accuracy.
  • Flags like Don’t Translate and Marked for Review are respected.
  • Custom prompts, tone controls, and automatic stale-string cleanup are available on paid plans.
  • The Quality Checker (Pro / Business) scores translations and flags any that look off.

Translation dashboard


Step 5 – Sync & Review Changes

If you… You’ll get… How to review
Connected GitHub An automatic pull request with localized .xcstrings Use GitHub’s diff viewer, then merge when satisfied
Uploaded manually A download button for an updated .xcstrings bundle Grab the bundle and inspect files locally

Step 6 – Import Back into Xcode

  • GitHub flow: merge the PR—done, strings are already on main.
  • Manual flow: replace your .xcstrings files manually

Step 7 – Verify in Xcode

Run the app in your new locale. Placeholders (%@, %lld, etc.) and plural rules should render correctly.

Verify in Xcode


FAQs

What is Xcode localization?

Xcode localization is the process of translating your app's user interface into different languages using Xcode's built-in tools like String Catalog and .xcloc files.

How do I localize my app in Xcode?

You can localize your app by setting up a String Catalog, exporting .xcloc files, and then re-importing translated versions into Xcode.

Does Xcode support localization for visionOS and macOS?

Yes! The same process works across iOS, macOS, visionOS, tvOS, and watchOS.

How much does String Catalog cost?

String Catalog starts as low as $15/month for our hobby plan. See all tiers on our pricing page. Student discounts available.

Do I need to export every time?

Not if you use GitHub Auto-Sync (paid). Manual uploads require re-uploading whenever you add new strings.

What happens if I mark a string for review in Xcode?

StringCatalog detects Marked for Review and re-translates that entry on the next sync.


Start Localizing Today

Ready to reach users worldwide? Sign up for free and translate your first language on us. Continuous sync, Quality Checker, and advanced AI controls await on our Pro and Business plans.