The three settings
Use language fallback and the two settings below it look related, but they solve different problems. The first affects the content of a translation file; the other two affect which file gets served.
Use language fallback
When enabled, any translation keys missing from a language are filled in with the corresponding text from that language’s fallback language (as configured in your project’s language settings) at the time the release is published. This changes what’s inside a given language’s file — it has no effect on which language file a device is served when the exact language it asked for isn’t part of the release at all.Fallback languages exclude regions (recommended)
If a device requests a regional variant (e.g.de-DE) that isn’t part of the release, but the base language (e.g. de) is, OTA serves the base language instead.
This only helps when the same release contains the base language. It does nothing if the release has neither the regional variant nor the base language.de-DEnot found? Thendeis used instead.
Fallback languages use the default locale (recommended)
If the requested language isn’t part of the release at all — and the regional fallback above didn’t resolve it either — OTA serves the project’s default locale instead, regardless of how unrelated the two languages are.frnot found? Then the project’s default locale,en-US, is used instead.
How OTA picks a language, step by step
For a given device request, OTA looks at releases from newest to oldest, stopping at the first release whose app version range matches the device. Within that release, it tries, in order:- Exact match — is the requested language part of this release? If so, serve it.
- Region fallback (if enabled) — is the base language (without the region) part of this release? If so, serve it.
- Default locale fallback (if enabled) — is the project’s default locale part of this release? If so, serve it.
Examples
Region fallback within a release
Suppose a distribution has published a single release containing English, French, and German (de, no regional variant) — no Austrian German (de-AT). Default locale: English. A device configured for Austrian German requests de-AT:
This is the setting’s main use case: a release rarely contains every regional variant of a language, but it often contains the base language, so dropping the region first avoids falling back to an unrelated default locale unnecessarily.
Fallback across releases (default locale)
Suppose a distribution has published two releases, both covering the app version the device is running:- Release 1 (older): contains English and German. Default locale: English.
- Release 2 (newer): contains English only. Default locale: English.
The takeaway: enabling use default locale trades “may return the wrong language from a newer release” for “always returns some usable language rather than an error.” Whether that trade-off is desirable depends on whether you’d rather your app show a slightly older release in the requested language, or the newest release in a fallback language.
Fallback settings only take effect on releases published after you change them. If you update a distribution’s fallback settings, publish a new release for the change to apply.