Formats / Apple String Catalog

String Catalogs, without editing JSON by hand

Xcode 15 replaced .strings with a single .xcstrings file holding every language at once. It is a better format and a worse thing to put in a pull request.

.xcstrings

One file, every language, one merge conflict

The old .strings layout gave each language its own file, so two translators working on two languages never touched the same lines. A String Catalog puts all of them in one JSON document, which means every translation lands in the same file and any two of them can collide.

Importing it into Linguiqo splits it back apart: each language becomes a language, each key becomes a string, and the file is written once on the way out.

Plural variations are read, not flattened

A String Catalog stores plurals under variations.plural, keyed by CLDR category. Linguiqo reads those into the same plural boxes every other format uses, so a Czech translator sees four fields and an English one sees two.

Devices variations are a different axis and are left alone rather than guessed at.

What Xcode gets back

A file in the shape it came in, with the localizations filled. Keys Xcode extracted stay as Xcode wrote them.

If a string changed both in Xcode and in Linguiqo since the last sync, the import keeps the Linguiqo version and saves the file's version in the string's history.

Questions

Does it handle plurals in .xcstrings?

Yes, variations.plural is read per language and mapped to that language's CLDR categories.

Can I still use .strings files?

Yes. Apple .strings is supported separately, so a project part-way through the migration can import both.

Upload a Apple String Catalog file and see

The demo reads a real file of yours and shows what came back. No account, nothing kept.

Open the demo

What Linguiqo is