Member-only story
Swift Localization in 2025: Best Practices You Couldn’t Use Before
String Catalogs improved localization but introduced new challenges. This article explores how to regain structure and efficiency with modern best practices and a new open-source tool that could change the way you localize.
The Evolution of iOS Localization
To understand how far localization has come — and where it still falls short — let’s take a quick look back: At the pre-String Catalogs era, developers relied on a combination of .strings
and .stringsdict
files, organized in language-specific folders like en.lproj
. This system, while functional, had several drawbacks:
- Missing safety checks for unused or missing translations
- Manual synchronization needed between different language files
- No built-in support for extracting strings from code
Tools like SwiftGen and BartyCrouch emerged to address these issues, providing type safety and automated extraction. And the community established best practices around using semantic keys (e.g., "Onboarding.Page1.title"
) to provide context for translators and group related strings together.