Webmove Blog : Multilanguage websites ontwikkelen met umbraco deel 2

Multilanguage websites ontwikkelen met umbraco deel 2

Deze blogpost reeks behandelt mogelijkheden en tools die Umbraco CMS biedt bij het ontwikkelen van een multilanguage website. In het eerste deel zagen welke structurele benaderingen er zijn om een multilanguage website in Umbraco aan te maken. In dit deel steken we de handen uit de mouwen en maken we stap voor stap een multilanguage website aan bestaande uit twee taalversies, Engels en Nederlands.

Instellen van de taal

Vooraleer je kunt beginnen met het implementeren van een multilanguage website in Umbraco, dien je op te geven welke talen je in je website wilt gebruiken. In de settings-sectie bevindt zich de 'Languages'-node. Standaard bij de installatie is English (United States) als taal geïnstalleerd:

languages-default
fig. 1 De Languages-node in de Settings sectie

Je kunt hier gemakkelijk een taal aan toevoegen door rechts te klikken op 'Languages' en een taal te selecteren uit de dropdownlist:

languages-dropdown
Fig.2 Selecteer een taal uit de Languages-dropdownlist

Het resultaat is dat een tweede taal werd toegevoegd aan de Languages -node:

languages
Fig.3 Een tweede taal is toegevoegd aan de Languages-node

Aanmaken van de default website

Vervolgens maak ik de eerste rootnode met onderliggende childnodes aan in de content tree:

dutch-rootnode
Fig.4 De rootnode en childnodes voor de Nederlandstalige website

Als de Nederlandstalige versie volledig af is kopieer ik deze structuur. Dit kan heel eenvoudig door rechts te klikken op de Nederlandstalige rootnode ('Startpagina') en de 'Copy' functie te selecteren. Kopieer de rootnode vervolgens naar de Content node in de Content tree. Als je wil dat er een wederzijdse relatie tussen de anderstalige pagina's wordt aangemaakt, dien je ook de checkbox 'Relate copied items to original' aan te vinken:

copy-rootnode
Fig.5 Kopieer de rootnode 'Startpagina' naar de Content-node

Als de 'Relate copied items to original' checkbox is aangevinkt, worden de wederzijdse relatie tussen de oorspronkelijke pagina en de gekopieerde pagina weggeschreven naar de umbracoRelation tabel in de database. In deel drie zullen we zien hoe we deze functionaliteit kunnen aanwenden om gebruikers onmiddelijk naar een anderstalige versie van een pagina te leiden wanneer ze de taalversie van een pagina wijzigen via een taalkeuze element.

Vervolgens kun je de naam van de rootnode en de onderliggende pagina's voor de nieuwe website aanpassen. Het resultaat kun je zien in fig. 6:

multi-sites-structure
Fig.6 Een multi-site structuur met Nederlandstalige en een Engelstalige website

We hebben de talen opgegeven en onze multi-site structuur geïmplementeerd. We moeten nu enkel het Umbraco framework duidelijk maken welke taalinstellingen we toegepast willen zien op welke website in onze structuur. Dit doen we via de 'Manage Hostnames' functie.

Manage Hostnames

Rechtsklik op een rootnode in de Content tree. Klik vervolgens op 'Manage Hostnames':

manage-hostnames-1
Fig. 7 Afzonderlijke hostnames instellen via de 'Manage hostnames' functie

In het Manage hostnames dialoogvenster kun je twee instellingen opgeven, de domeinnaam en de gewenste taal:

manage-hostnames-2
Fig.8 creëer een domeinnaam voor je rootnode en selecteer de gewenste taalinstelling

Domain

In een testomgeving kun je in het Domain-veld gerust een nep domeinnaam opgeven. In productie kun je, indien gewenst, ook een subdomein naam opgeven, bijv. nl.webmove.be . Contacteer voor het aanmaken van een subdomein je netwerkbeheerder of ISP.

Language

Selecteer in de Language dropdownlist de taalinstellingen die je wil toepassen op je website rootnode. Zoals eerder aangehaald is Umbraco gebouwd bovenop het ASP.NET framework, en maakt het gebruik van de localization en internationalization functionaliteit van ASP.NET. Dit betekent dat ook datums, getalnotitatie, munteenheid en alle andere cultuurgebonden informatie correct zullen weergegeven worden voor je rootnode pagina en alle onderliggende childnode pagina's.

De Language-instelling is ook belangrijk bij het gebruik van Dictionary Items

Dictionary items

Het probleem bij websites met een content management systeem, is dat de content beheerder meestal enkel toegang heeft tot de content die is ingevoerd via het CMS. Een website heeft echter ook vaak statische inhoud die niet kan beheerd worden via de 'Content' sectie. Het gaat hier voornamelijk over statische tekst in Umbraco Templates of scriptbestanden (Xslt-bestanden, Razor-scripts).

Umbraco heeft een handige oplossing, de zogenaamde Dictionary Items. Wanneer je verschillende talen hebt toegevoegd aan je website, kun je voor alle statische tekst, bijv. 'Laatste Nieuws' een Dictionary item aanmaken en voor elke taalversie een variant voor deze tekst opgeven:

dictionary-items
fig.9 Geef voor elke Dictionary Item de verschillende taalvarianten op

Je kunt dan vervolgens vanuit je Umbraco Template of je Umbraco scriptbestanden het Dictionary Item aanroepen:

<h2><xsl:value-of select="umbraco.library:GetDictionaryItem('LatestNews')"/></h2>

Het Umbraco framework zal vervolgens de juiste taalversie van deze Dictionary Item tonen aan de gebruiker:

laatste-nieuws
Fig.10 op de Nederlandstalige website luidt de statische tekst 'Laatste Nieuws'
  latest-news
Fig 11 Op de Engelstalige site luidt de statische tekst 'Latest News'

Met behulp van de Dictionary Items, kan werkelijk elk stukje tekst op website gelocalized worden.

We zijn nu klaar met de implementatie van onze multi-site structuur. Door het toevoegen van talen, het opgeven van domeinnamen en het toewijzen van die talen voor elke website via de Manage Hostname functie vermijden we naamsconflicten tussen pagina's met eenzelfde naam, en worden localizatie en cultuurgebonden informatie (datums, getalnotatie, munteenheid, etc ... ) automatisch toegepast. Met behulp van Dictionary Items worden ook teksten en labels die niet via het CMS beheerd worden dynamisch aangepast aan de juiste taalversie.

In het derde deel zullen we dieper ingaan op de Relations functionaliteit, en hoe we deze functionaliteit kunnen aanwenden om alle taalversies van een bepaalde pagina aan elkaar te linken zodat een eindgebruiker bij wijzigen van de taalkeuze onmiddellijk naar het anderstalige equivalent wordt geleid.

Posted by Anthony Candaele at 10:01
Categories :

0 Comments:

Post a comment

Latest comments