---
title: "How do I set the default (fallback) language of an iOS app?"
description: "The fallback is the development language, stored as `CFBundleDevelopmentRegion` in Info.plist and as `developmentRegion` in the Xcode project. iOS uses it when none of the user's preferred languages match the app's localizations, and you change it by editing `developmentRegion` in `project.pbxproj`."
category: ios
date: 2026-10-09
canonical: https://localizely.com/i18n-questions/ios/how-do-i-set-the-default-fallback-language-of-an-ios-app/
---

# 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](https://developer.apple.com/documentation/bundleresources/information-property-list/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:

```text
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](https://developer.apple.com/forums/thread/26130).

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](/apple-xcstrings-file/).

Source: https://localizely.com/i18n-questions/ios/how-do-i-set-the-default-fallback-language-of-an-ios-app/
