Localizely logo
  • Home
  • Getting started
  • How it works
  • Pricing
  • FAQ
Sign up

I18n questions · iOS

How do I set the default (fallback) language of an iOS app? 

The fallback language of an iOS app is its development language. It is stored as CFBundleDevelopmentRegion in Info.plist (shown as "Default localization" in Xcode's property list editor) and as developmentRegion in the project file, which the project editor shows under Project > Info > Localizations with the label "Development Language".

At launch, iOS walks the user's preferred languages in order and picks the first one the app has a localization for. A regional variant falls back to its base language on the way: a user with en-GB gets en, a user with es-MX gets es-419 and then es. Only when nothing matches does the app run in the development language. Bundle applies the same order per resource: global resources first, then region-specific, then language-specific, then development-language resources.

A non-English default is therefore just a different development language. In a project created by Xcode, CFBundleDevelopmentRegion is set to $(DEVELOPMENT_LANGUAGE), and that build setting takes its value from developmentRegion in project.pbxproj. Xcode has no control for changing it, so edit the project file with the project closed:

developmentRegion = fr;
knownRegions = (
    fr,
    en,
    Base,
);

Then make sure the fr.lproj folder (or the fr column of your String Catalog) contains every string, and check that Bundle.main.developmentLocalization returns "fr" at runtime. Apple engineers describe the same edit on the developer forums.

Two related keys:

  • CFBundleAllowMixedLocalizations set to YES lets the app pick up localized strings from frameworks, so system-provided UI such as UIKit buttons can appear in the user's language even when the app itself is not localized into it.
  • CFBundleLocalizations lists the supported languages of apps that manage localized resources without .lproj folders. For a normal Xcode project, the .lproj folders in the built app are what counts.

If you use String Catalogs, keep the catalog's sourceLanguage equal to the development language, so the strings that ship as the fallback are the same strings translators work from; see Apple .xcstrings.

Published Oct 9, 2026 · Markdown version

Related iOS localization questions:

Apple localization files:

Learn about Apple .xcstrings string catalogs
Localizely logo
About
Free tools
Boring stuff
  • Privacy Policy
  • Terms of Service
  • Cookie Policy
  • Compare
Newsletter
Copyrights 2026 © Localizely