Vícejazyčné weby mohou mít mnoho jazykových variant

Globální společnosti často používají desítky jazykových variant v jednom sitecore projektu.

Webové stránky používají rozdílné jazykové sady v jednotlivých webech napříč projektem

Čím více jazykových variant je přidáváno do projektu tím je pravděpodobnější, že každý web bude používat různé jazykové varianty. Důvodem může být dostupnost produktu nebo služby jen v omezeném počtu zemí nebo prostě jen jazyková varianta ještě není připravená k publikaci.

Nová doména vyžaduje změny konfigurace

Při vytvoření nového webu běžícího na samostatné doméně je třeba připravit konfiguraci , definovat vazby na IIS, přidat záznamy do DNS apod. Konfigurace se dá připravit s předstihem a při nasazení aplikace na produkční prostředí se zároveň změní konfigurační item v sitecore a přepublikuje se vše potřebné, aby se nová jazyková varianta na webu zpřístupnila.

… Nebo můžete upravit konfiguraci jako jsme to provedli my.

Nový atribut availableLanguages v konfiguraci site

Zvolili jsme úpravu konfigurace abychom měli přesnou kontrolu nad spuštěním jazykové varianta do produkčního prostředí. Přidali jsme nový atribut availableLanguages do konfigurace site. Tímpádem nejsme závislí na změně konfigurace a její publikace ze sitecore.

Sitecore nový parametr samozřejmě nezná, ale je snadné přidat metodu rozšiřující SiteContext.

<site name="swissproductsample" patch:before="site[@name='website']"
          hostName="swissproductsample"
          targetHostName="swissproductsample"
          language="en-GB"
          availableLanguages="de-CH,fr-CH"
          rootPath="/sitecore/content/swissproductsample"
          notFoundItem = "page-not-found"
          startItem="/website"
          urlLanguageEmbedding ="always"
          customCache ="true"
          inherits="website"/>

Zdrojový kód dekorátoru SiteContext

Následující kód byl pro přehlednost zjednodušen. Kód čte atribut availableLanguages a vrací seznam objektů Language. Tímto způsobem můžete snadno filtrovat funkce pro dostupné jazyky.

Například když budete chtít na vícejazyčném webu běžícím na jedné doméně generovat soubor robots.txt file můžete iterovat přes všechny dostupné jazyky pro přidání odkazů na jejich soubory sitemap.xml.

Nebo nejčastější způsob použití bude v komponentě přepínače jazyků, tak že zobrazí pouze dostupné jazyky pro daný web a přitom tato komponenta může být sdílená s ostatními weby.

public static List<Language> AvailableLanguages(this SiteContext site)
{
    Assert.IsNotNull(site, "Site cannot be null");
    var result = new List<Language>();
    if (!site.Properties.AllKeys.Contains("availableLanguages"))
    {
        return result;
    }

    var availableLanguages = site.Properties["availableLanguages"];
    var languages = availableLanguages.Split(',');
    foreach (var languageName in languages)
    {
        Language language;
        if (Language.TryParse(languageName, out language))
        {
            result.Add(language);
        }
    }
    return result;
}