Localisation

La localisation avec Kooboo CMS n'est pas aussi triviale que dans d'autres CMS comme Sitecore, mais elle fonctionne. Le plus compliqué est de changer de langue en restant sur la même page.

L'idée est de créer un site principal (pour la première langue) et des sous-sites pour les autres. Par contre, il semble impossible de simplement trouver la page d'un site, il faut donc s'assurer que tous les sous-sites aient la même structure que le site de base.

ATTENTION: Il ne faut pas faire "Unlocalize" sur une page, ça semble briser complètement la structure du sous-site à l'endroit où l'opération est effectuée, après il faut rebâtir cette page et ses sous pages à la main. Deplus, dès qu'une page est localisée, les enfant du site parent ne s'ajoutes plus. Donc, la localisation n'est "facile" que sur la création initiale du site, après il faut tout recréer à la main.

Voici mon exemple de code pour passer d'une langue à l'autre.

  @{
var enSite = "/en";
var page = Html.FrontHtml().PageContext.PageRequestContext.Page;
var site = Html.FrontHtml().PageContext.PageRequestContext.Site;
var prefix = Url.FrontUrl().PageUrl(page.VirtualPath).ToString();
if (!string.IsNullOrEmpty(prefix)) {
if (prefix.EndsWith(page.VirtualPath)) {
prefix = prefix.Substring(0, prefix.Length - page.VirtualPath.Length);
}
var newBasePath = site.Parent == null ? prefix + enSite : prefix.Substring(0, prefix.Length - enSite.Length);
var pagePath = (newBasePath + "/" + page.VirtualPath).Replace("//","/");
<p class="navbar-text change-lang navbar-right">
<a href="@pagePath">@(site.Parent == null ? "English" : "Français")</a>
</p>
}
}