We often create multilingual websites using Sitecore’s powerful CMS. Sitecore has a great solution for multilingual content. Each item in the content tree can include a number of item versions, and each item version can be delivered in a different language, so translation of content is simple and straightforward.
Well, not exactly.
These item versions actually reference what Sitecore calls a language, but what .NET calls a culture. These cultures are built-into .NET which includes a number of classes in System.Globalization, but we won’t get into those details here.
.NET also defines a list of cultures. Each culture in the list is constructed of two values – an ISO-636 specified two letter lowercase culture code (associated with a language), and an ISO-3166 specified two letter uppercase subculture code (associated with a country or region). So these culture codes look like the following for the United States :
en-US – English in the United States
es-US – Spanish in the United States
Not to debate speaking Espanól in the United States, there are cultures because these two languages are commonly spoken in the USA.
Now, let’s look at a language spoken in multiple countries – Chinese. The culture code for Chinese in China is zh-CN, but Chinese is also spoken in a few other places – zh-TW (Taiwan), zh-HK (Hong Kong), zh-SG (Singapore) and zh-MO (Macau).
And, of note – there is no such thing as en-CN (English spoken in China). So what do I do when I want a website for China, that is offered in Chinese and English?
We can register such a fictitious culture on a system by writing and executing a script (see How to Create Custom Cultures) which will register the culture in .NET and create some “things” that are needed on the local system. After that, I can add this culture to Sitecore by defining an appropriate item in the Sitecore Sitecore/system/languages folder.
This works, but it might cause us some grief later on because we have to install this fictitious culture on each server (developer workstations, etc.), and if we later export content to an LMS or some other translation or content system – our made-up culture might confuse them.
As another option, even easier, I can use another English from the system, such as en-GB or even en-US. This is where it gets interesting.
So, what is a site cluster? A Site Cluster is created when we define multiple “sites” that share a single content tree in Sitecore. I wish I could take credit, but it was in fact my friend Peter Garner that coined this term. Site Clusters are nice because when I have 2 websites that share a lot of content (which is common for large enterprise sites offered in multiple countries), it simplifies content sharing and administration.
So now that we know what a culture / language is and how it works, we can dig a little deeper into what a Site Cluster is, how we use them, what problems it solves, and what problems it creates and how we solve those problems. Stay tuned for Part 2.