multi sites multilingual websites solution

Multilingual website and localization has been a challenging issue for a long history. Especially in the European area, most international companies have offices in several countries.

The normal way


I have seen many company websites developed using below methods.

1. A multilingual database table to store multilingual content.
It can be one table or one main table + one sub table. Typically it is done with bellows fields (In MSSQL)
  - ContentId (int primary key)
  - LanguageId (int or char(2) primary key)
  - Title nvarchar(500)
  - Description nvarchar(max)

2. A translation admin UI.
Editors can login and translate the content into the languages they need.

3. A multilingual website with a language ID.
Language Id can be in the URL or using URL rewrite to make it SEO friendly. It might look like en.mysite.com, cn.mysite.com and nl.mysite.ocm

This tries to fix the problem by content translation. However multilingual sites are not just about content localization. It is also about layout changes, web design or even the functionality. Here is simple example, your company is running business in both China & Netherlands, and so you have two languages of your website, cn.mysite.com and nl.mysite.com. On the national holidays of China, you want to add some ads on the homepage of cn site but do not want to change anything on nl site. By above normal approach, there is not an easy way to do it. Not to mention some languages requires completely different layouts.

International companies require more about multi sites than multilingual sites. Big organizations may have different departments, each department has its own website, or companies have one public and several intranet websites. Sharing content and design across those websites is always a challenging task.

The Kooboo solution


Finally Kooboo teams came up with a solution, site inheritance and localization. This is one of the key reasons why companies choose Kooboo.

Inheritance
At Kooboo, the concept of inheritance at Object Oriented Programming is extended to a maximum. A whole website is being used like an object; a sub website can inherit everything from parent site and localize any elements he wants. He can localize a content item, as well as design elements like layout template, content template or theme.

In order to fully use the concept of inheritance, the most important thing is to define the site relations. Before implementing multi sites, you may want to draw a site relation. Below is an example of site relation.
kooboo multi site
The principle of designing site relations is that sub sites inherit everything from its direct parent site and able to localize elements.

In above example, UK is the main site, which is the application where you should define global elements which might be used by other sites. A scheme or content template defined in UK site will be accessible from all other sites.

CN site inherits from ASIA site, which inherits from UIK main site. CN site will be able to access a content template X defined in UK site via ASIA site. However if ASIA site localize content template X from UK site, CN site can only use the localized content template X at ASIA site. ASIA has different culture background, which might requires different layout and web design, so it will be reasonable for CN site to inherit from ASIA main site or from other Asian sites.

The most common difference between intranet sites and public Internet sites is the information flow. Content in the public internet site should be available to intranet sites, while content in Intranet sites should NOT published to Internet public site by default. So in above chart, you can see that DE Intranet site is a sub site of regular DE site.

Root


You will see the application "root" very often within Kooboo. You do not have to use it or worry about it. Leave it alone, your Kooboo implementations will still working very fine.

However if you fully understand the root application, it will be pretty handy to use it. It was originally a "best practice" we had. We tried to ask people to always create a main application to keep global elements, later we decided to implements this main application directly as a "root" application in the system. When you login to Kooboo, in the root menu, you will see menu like"system", "design", "Extension" and "Content". Similar as what you see inside every application. That is the root application.
kooboo multi site root
If you use Root, you can put all the global elements in the Root, your site relation might become looks like below.
kooboo site relation root
We do not have a requirement to use Root. It depends on the site and organization structure, it is often handy to use one country websites as the leading websites. However Root application might be handy when you a web design company and you host several client websites in one Kooboo instance.