In this post in my series on Language Strategy and Fallback, I will clarify what Language Fallback is, How it works, and why anyone would want to use it. I will do the same for Enforce Version Presence. These two concepts, although not dependent entirely on one another, very much go hand-in-hand.
Language Fallback Definition:
Functionality that allows control over which items and fields in Sitecore re-use content from other language versions if localized translations are not available.
How it works:
Much like the standard values for a template, it instructs Sitecore to pull content from another language version of the same item if the value for the current language version is null. It will recursively keep looking to other languages if there is chained fallback.
Why use Language Fallback?
There are two types of fallback available in the core platform:
Item-Level Fallback: The entire item and all of its field values will fall back to a different language version. It is an ALL OR NOTHING fallback scenario. The whole item and all of its fields fall back to another language and there literally is no version in existence in that language.
In this screenshot, you can see that when you select the language dropdown, it indicates the en-us language version does not exist and is using whatever is in the en version.
If you select that en-us version, it displays a message explaining that the language version does not exist and that you are seeing the values of the language version from which it is actually pulling the values (en).
Field-Level Fallback: Specific fields will fall back, allowing you to localize / translate only certain fields, allowing others to continue falling back.
In this screenshot, you can see that the Headline field is displaying a message that it is actually falling back and pulling value from the 'en' language.
Enforce Version Presence Definition:
A configuration that tells Sitecore to treat items that don’t have a version in the current language as Non-Existent. This can be used regardless of whether Language Fallback is enabled.
Although related and very important to the language fallback concept, this is a function in and of itself and can be turned on and considered without using any kind of language fallback
Sitecore will check for the specific language version and if it does not exist, it will return null. It can be configured at an item or template level via standard values.
Why turn on Enforce Version Presence?
If NOT turned on, Sitecore will serve up the item empty when requested from Sitecore if the language version doesn't exist and/or fallback is not being used, which results in a user experience that is not optimal (blank page!).
Most importantly, when using Field-Level Fallback, Enforce Version Presence allows content authors to designate if specific pages should (or should not) exist for specific languages, by the sheer existence of that language version.
Note: Enforce Version Presence makes no sense to use with Item Level fallback because Item Level fallback depends on language versions NOT existing to work and Enforce Versions Presence essentially assumes the opposite (the item doesn't exist if the language version wasn't added).
In my next post I will give the quick rundown of how to go ahead and turn on language fallback and enforce version presence.