The Missing String Catalogs FAQ for Localization in Xcode 15
Discover the game-changing implications of Apple’s new feature, String Catalogs, which replaces traditional localization files and streamlines the localization process. From automatic key extraction to safety checks, find out why developers should be excited about this powerful tool in Xcode 15.
--
In WWDC23 Apple introduced a new feature to Xcode that sherlocked large parts of my RemafoX app. Of course, I tested the new feature in detail and asked all my questions to the team who built it in the related Slack activity. They actually did a great job with String Catalogs, so much so that I will reimagine my app since they’ve taken away most of the low-level work that I did in my app in the past.
But most people I talked to since Dub Dub are still unaware of the implications String Catalogs have on their projects. So I figured I should answer the most frequent questions to make it more clear how amazing String Catalogs really are.
What are String Catalogs? What about Strings(dict) files?
String Catalogs are files with the ending .xcstrings
and store their content in a custom JSON format. The exact format is not documented (filed feedback to change that: FB12264877) and as a developer, you won't ever need to fiddle with any JSON code because Xcode 15 ships with a visual editor:
String Catalogs replace both .strings
and .stringsdict
files and therefore support pluralization out-of-the-box. Unlike .strings(dict)
files that are placed under locale-specific folders like en.lproj
, String Catalogs encapsulate the translations of all supported languages in one file. This allows for safety checks like showing the progress of specific translations right in Xcode so you are aware of any translations missing (replacing the RemafoX Linter). Likewise, it will also add new keys to all languages automatically for you, saving you a lot of time…