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:

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:

Fig.2 Selecteer een taal uit de
Languages-dropdownlist
Het resultaat is dat een tweede taal werd toegevoegd aan de
Languages -node:

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:

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:

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:

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':

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:

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:

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:

Fig.10 op de Nederlandstalige website luidt
de statische tekst 'Laatste Nieuws' |
|

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.