In the project I am currently working on, we have a challenge concerning language. The customer is located in Denmark, and its primary customer base is Danish. Meanwhile they are trying to make their products available for all people, as a big part of what they are selling, is international books. The Company is selling charts and books for sailing, and is market leader. Most of their charts is only available in English, but some of their other products does have both a Danish and an English name and description.
They wanted their menu on their pages to show Danish, when available, and English as a fallback. The solution for the problem is to override the item manager, and make it return items in the current language, if a version exist, else return it in the fallback language. Fortunately, others have had this problem before, and is found the Language Fallback on Sitecore Marketplace. The module is written by Alex Shyba, and does exactly what our customer needed.
To visualize it, their top menu will look something like the following on English:
When a user changes to Danish language, the menu will look like this:
Notice the first menu, which now is called "Bøger". In Sitecore, a user have made a Danish version of this item, therefore it shows the Danish title. All the other menus are called their English names, as no Danish information has been made in Sitecore.
Implementing the module is very easy. Go to the modules page on Sitecore Marketplace, download the package and install it. Afterwards, you need to change your ItemManager in web.config, or just simply patch it in your include folder. The .config file for patching the module looks like the following:
<itemManager> <patch:attribute name="defaultProvider">fallback</patch:attribute> <providers> <clear /> <add name="fallback" type="Sitecore.Data.Managers.LanguageFallbackItemProvider, Sitecore.LanguageFallbackItemProvider"/> </providers> </itemManager>
That is it, very simple and very useful module.