When I setup a page in Sitecore that does not have a version for the default language, then enter that page without specifying a language code will result in empty data being displayed. The problem is if I do specify a language code in a URL and someone visits that page (like sc_lang=zh-SG for example) then when the user browsers to other parts of the website they get blank content. Ideally there would be a way to say that one specific page should always render in a given language without modifying the user context in a way that would impact their experience in other parts of the website. Any recommendations?
If you want to achieve this out-of-the-box, your only option is to configure
So essentially you will be running your site in a "main" language (like zh-SG) and then fall back to whatever is your default for when no versions are available.
What you need, is called "Item-level language fallback".
Item-level fallback enables you to set up an 'empty' item version in a given language so that it falls back to another language version, including all its fields. In this way, you can launch a new language version of your entire website without creating any items in the new language in the Content database.
Source: Language fallback
The full set of instructions to set this up would probably be too much for this answer, without knowing your specific Sitecore version and languages. The guide can be found here however: Enable and set up language fallback
In essence you need to add this to your site configurations:
<sites> <site name="shell"> <patch:attribute name="enableItemLanguageFallback">true</patch:attribute> </site> <site name="website"> <patch:attribute name="enableItemLanguageFallback">true</patch:attribute> </site> </sites>
(for just item level fallback)