How to translate an Xcode String Catalog with AI

How to translate an Xcode String Catalog with AI

October 4, 2026

An Xcode String Catalog is one file that holds every language of your app. To add German, Japanese and Portuguese, you fill in that one file, and Xcode takes it from there.

This guide is for Localizable.xcstrings and the one thing that makes it different from a normal translation job: the plurals. For the other app formats, see how to translate your app’s language files.

What a String Catalog is

String Catalogs arrived with Xcode 15. Apple’s WWDC23 session describes them as a way to manage all of your strings in one place. Xcode finds localizable strings after each build and adds them to the catalog, and you add a language with the plus button.

Under the hood it is a JSON file called Localizable.xcstrings by default. Each key holds its translations for every language, plus the comment for translators.

Which option should you use?

Good for Where it stops
AI Glot Several languages in one job, plurals done per language, a glossary that must hold Not needed for ten strings
Xcode’s Export Localizations One localization catalog per language, to send to a translator, then Import Localizations It prepares the files but does not translate them, so you still need a translator or a tool
A translation management platform (Crowdin, Lokalise, Phrase) A team with reviewers and a repository connection You set up a project and connect your repository first
DeepL XLIFF files, which are on its list .xcstrings is not on that list
ChatGPT, Claude or another assistant A handful of strings A catalog is nested JSON with plural variations, so a long file is slow, uses up your usage limit and risks a broken key or a missing plural form
A freelancer or an agency Your App Store page and onboarding Slow, priced per word

Pay a person for the five strings that sell your app. Run the thousands behind them through an engine.

Why AI Glot fits a String Catalog

  • It writes into the right key and language. The catalog stays one file.
  • Plurals are done per language. Russian needs four forms and Arabic six, and each form is written with its category.
  • Format specifiers are kept. %@, %d and %1$@ stay in the translated string.
  • Comments for translators stay attached to their keys.
  • You can fill only the gaps. Reviewed strings come back untouched.
  • A plan before any spend.

The path of one file

The five steps of a String Catalog job. Everything before approval is free, so a plan that misread the catalog costs nothing to correct.

Why plurals are the point

English has two plural forms. Other languages have more, and a message that says “3 photos” needs the right one in each language.

English has two plural forms, Russian four and Arabic six. Each form a language uses is written with its category.

A category the source does not have but the target language uses is written, so a Russian catalog gains its few and many forms. Without that, the app shows a wrong form for some counts.

What to check after

Substitutions and device variations. They are not translated yet and are left as they are. The plan tells you how many there are.

Language list. Open the catalog in Xcode and check that each new language is listed and its progress reads as complete.

Length. Run the app in one new language and open the screens with the longest strings, for text that overflows a button.

How to do it, step by step

1. Try a file for free. The String Catalog translator needs no account and takes files up to 2 MB and 5,000 words.

2. Upload Localizable.xcstrings in the app. Find it in your project folder, in the Resources folder if you accepted Apple’s default location.

3. Say what you need in one sentence.

Add German, Japanese and Portuguese.
Translate only the keys that have no translation in each language yet.
Instructions for this batchOptional
Apply
You describe the job in plain English. AI Glot turns it into a plan you can read and correct before anything runs.

The sentence decides what is translated across the whole catalog. A rule about wording, such as “keep every format specifier exactly as written” or “use the informal register”, goes into the second box at approval, because it is applied to each string as it is written.

4. Add a glossary for the app name, feature names and the words your app always says one way. How to build one.

A glossary settles the terms that must not drift, and applies the same decision to every file.

5. Read the plan and choose a quality level.

Two quality tiers, chosen per file. Lite covers about three times more words for the same credits.

Lite gives about three times more words per credit and is faster: right for a new locale you will review. Standard is for the strings on your App Store page. One credit is one word in Standard.

6. Approve and download, then replace the catalog in your project.

One file comes back, in the format it arrived in.

One catalog, several languages

One String Catalog gains several languages and comes back as the same single file.

The numbers are an example. Unlike most formats, a String Catalog holds every language, so you get one file back, not one per language.

Three ways to run it

Three ways to translate your String Catalog. They all give you the same filled catalog.

From the command line runs again at every release, when Xcode has added new strings to the catalog:

id=$(aiglot batches create Localizable.xcstrings \
      --instruction "Add German, Japanese and Portuguese. Translate only the keys with no translation yet." \
      --json | jq -r '.data.id')
aiglot batches get "$id" --json | jq '.data.plan'
aiglot batches approve "$id" --quality lite \
  --instructions "Keep every format specifier exactly as written."
aiglot batches download "$id" --output Localizable.xcstrings

With your AI agent: connect AI Glot as an MCP server. The agent can read your project, propose glossary terms, run the job and put the catalog back where it belongs.

In the app: upload, click, download. Good for a one-off.

For an API integration, see the API documentation.

Pricing lists what a larger volume costs, and a free account comes with credits to run a real file.


The limits quoted here are the ones in force when this was written: 8 MB per String Catalog, and 2 MB and 5,000 words in the free tool. The description of String Catalogs and Export Localizations comes from Apple’s WWDC23 session. DeepL’s list comes from its own documentation. File names and string counts in the diagrams are examples. Your plan shows the real figures for your own file, and it is free to read.

10,000 words free when you sign up

Ready to translate your large files?