Language Fallbacks
Neutral Language Fallback
When a translation is not found in en-US
, it is acceptable to look for a translation in en
language, as they are closely related.
Two letter language IDs (neutral languages) are implicitly language fallbacks of 4 letter country specific codes.
So es
is language fallback of es-AR
and en
is language fallback of en-US
and en-GB
.
Invariant Language Fallback
Invariant language with empty code is the final fallback of all languages implicitly.
Implementation
Language fallback functionality should be implemented by the ILocalTextRegistry provider (e.g. LocalTextRegistry class).
Providers may also support setting language fallbacks explicitly, so you can set en-US
as language fallback of en-UK
if needed.
This is how looking up a translation for a local text key works:
- If current language has a translation for the key, return it.
- Check every explicitly defined language fallback for a translation.
- If language ID is a 4 letter country specific code, check neutral language for a translation.
- Check invariant language for a translation.
- Return the key itself or null for TryGet.
Let's say we set en-US
as language fallback of en-UK
.
If we search for a translation in en-UK
, it is looked up in this order:
- en-UK
- en-US
- en
- invariant