Before migrating to xcstrings for i18n, our project used Xcode's base localization. We want to preserve that pattern after the migration, but haven't found a clean way to do it.
First attempt — a "base" identifier in both the project configuration and the xcstrings files. This fails: the compiler inconsistently emits either a base.lproj or a Base.lproj folder, and the casing mismatch breaks the App Store Connect upload.
Fallback — a "und" entry, "Undetermined" under ISO 639-2, which Apple documents as a valid language identifier. This behaves correctly at every visible step:
- the build generates a und.lproj folder, as expected;
- the ASC upload succeeds with no warning;
- "Undetermined" appears in the ASC list of available languages;
- the build is downloadable on TestFlight and distributable on the App Store, with no warning.
But there's one silent failure: once a "und" build is shipped, the app/version becomes invisible — on the App Store, on iOS, and on the website.
We currently work around this by stripping every "und" entry from the project before shipping. But we genuinely need the base-localization pattern, and this manual removal isn't something we're comfortable relying on.
Is there a supported way to keep a neutral/base localization in xcstrings that both passes ASC upload and stays visible on the store?
As my colleague mentioned, there is no way to define a "a language that is usable for developers and won't be visible to users" when using a String catalog. The Default Localization, which you can see and change by selecting your project > Info > Localizations in in Xcode, is similar to the concept of Base in many ways, but it's a real localization visible to users, if the language matches.
und is a valid ISO code and is supported by the build tool chain, but is not supported by the App Store index generation process, becauseund can't be mapped to any country or region, and hence can't be tied to any country-specific index database.
So the behavior you have seen is pretty much as-designed. Feel free to file a feedback report to voice your opinion though, if you see that the behavior impacts your workflow negatively.
Best,
——
Ziqiao Chen
Worldwide Developer Relations.