🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #765

Re: Meertalige website

#765
From: Carl Colijn
Date: Mon, 22 May 2006 08:27
122 lines
6441 bytes
In news:BcKdnSEwnK3VLO3ZnZ2dnUVZ8qqdnZ2d@scarlet.biz,
Pugi! <reply@group.be> typed:
> Hoe maak je best een meertalige website ?
>
> Heb dat ooit eens voor een kleine vzw gemaakt, met een simpele if :
> als gekozen taal (uit cookie of link) engels is, toon engelse tekst,
> anders too nederlandse tekst. Ik heb maar een tweetalige site nodig,
> maar je kan het natuurlijk ook zo maken dat er moeiteloos (behalve
> voor de vertaler dan) andere talen kunnen toegevoegd worden (dan heb
> ik het over frans, duits, spaans en niet over arabisch, chinees, ...).
>
> Standaard taal is nederlands. Wanneer de bezoeker een andere taal
> kiest (voorlopig enkel engels) dan stop je dat best in een cookie,
> vermoed ik, en voor het geval dat er geen cookies aanvaard worden,
> kun je de taalkeuze ook meegeven als een parameter in de links
> (www.mijnsite.be/dezepagina.php?taal=en). Tenzij er andere
> alternatieven zijn.
>
> Waar stockeer je de teksten ? 2Dimensionale array (ok voor kleine
> stukjes tekst), includes, xml, databank, ... ?
>
> Pugi!

Hoi Pugi,

Onze website is ook 2-talig (en/nl).  Wij hebben het opgelost door de 
hoofdindexpagina (/index.asp) een "kies je taal" pagina te laten zijn, en 
vervolgens de 2 talen (nederlands en engels) in aparte subdirectories te 
zetten; fysiek 2 aparte takken dus.  Een voorbeeld: /nl/services/index.asp 
vs. /en/services/index.asp  Je hoeft zo geen cookies te gebruiken om de 
taalkeuze over sessies heen te bewaren, omdat de paden fysiek anders zijn. 
En we vertrouwen erop dat de gebruikers via de goede taalpagina binnen 
worden gestuurd door de zoekmachines :)

Omdat de pagina's dan wel gedupliceerd worden, hebben we ervoor gekozen de 
standaard paginaindeling (menu, header, footer, etc.) in een include 
framewerk te zetten.  Verder hebben de 2 taaltakken dezelfde 
filesysteemstructuur, zodat je makkelijk van de ene taal in de andere kan 
switchen door alleen de url aan te passen door op positie 3 in het URL pad 
een andere code neer te zetten; de taalkeuze wordt verder door het framework 
geregeld.  Hierdoor bevatten de pagina's alleen maar een paar standaard 
includes, wat Const parameters en de tekst zelf.  De pagina's hangen bij ons 
redelijk van script aan elkaar (het is dan ook de site van een paar 
programmeurs :) ), maar je kan het ook vrij basic houden.  Een nadeel is 
natuurlijk wel dat je zo moeilijk een CMS kan gebruiken, omdat de site toch 
een beetje uit losse tekstfragmenten bestaat (alhoewel je het framewerk zelf 
in combinatie met Windows Verkenner / Notepad natuurlijk ook als een heel 
simpel CMS kan zien).

Een voorbeeldje van een pagina met wat extra commentaar erin; maakt het een 
stuk duidelijker:

=================================================

<%
Option Explicit

Const sLang = "nl"    ' De taal van deze pagina
Const bShowLangSwitch = True    ' Of de pagina vertaald is (of er een 
taalvlag wordt getoont)
Const bSwitchWithQuery = True    ' Of de querystring meemoet met het 
switchen van de taal
Const sTitle = "TwoLogs - Producten - Ondersteuning"
Const sKeywords = "producten ondersteuning ondersteuningsvraag formulier 
fout gevonden twologs"
Const sDescription = "Gebruik onderstaand formulier om uw 
ondersteuningsvraag te stellen. Heeft u een tekortkoming in een van onze 
producten gevonden, dan kunt u ons ook via dit formulier hiervan op de 
hoogte stellen."
Const sMainHeading = "Ondersteuning"    ' Hoofdtitel van de pagina voor in 
de H1
Const sSection = "products"    ' De sectie...
Const sSubSection = "support"    ' ...subsectie...
Const sPageName = "support"    ' ... en paginanaam voor het menu, 
stylekeuze, custom logging, etc.
%>
<!-- #include file="..\..\framework\page_1.asp" -->

<!-- Ruimte voor extra dingen voor in de header, zoals JavaScript en inline 
styles -->

<!-- #include file="..\..\framework\page_2.asp" -->


<!-- Nu de algemene header include in de juiste taal (/nl/header c.q. 
/en/header) -->
<!-- #include file="..\header.asp" -->

<!-- #include file="..\..\framework\page_3.asp" -->

<!-- Nu de toc voor deze sectie (/nl/services/toc c.q. /nl/contact/toc) -->
<!-- #include file="toc.asp" -->

<!-- #include file="..\..\framework\page_4.asp" -->

<p>De paginatekst!</p>

<!-- #include file="..\..\framework\page_5.asp" -->

<!-- Nu de algemene footer include in de juiste taal (/nl/footer c.q. 
/en/footer) -->
<!-- #include file="..\footer.asp" -->

<!-- #include file="..\..\framework\page_6.asp" -->

=================================================

Overigens zitten we nog te denken aan een betere oplossing voor de algemene 
"Kies je taal" pagina: gewoon 2 domeinen registreren; eentje de .com voor de 
engelse, en eentje de .nl voor de nederlandse.  Een kleine cosmetische 
verbetering, maar je moet natuurlijk wel de luxe hebben dat je domeinnaam 
nog vrij is.

Groetjes,
Carl Colijn

-- 
TwoLogs - IT Dienstverlening en Productontwikkeling
A natural choice!
http://www.twologs.com
TimeTraces: het krachtige en veelzijdige tijdsregistratiesysteem!
http://www.twologs.com/en/products/timetraces.asp 
Technical Details
Message-ID: <jCecg.720$YI3.541@amstwist00>
Path: arc1-ca.pugleaf.net!g2news2.google.com!news3.google.com!border1.nntp.dca.giganews.com!border2.nntp.dca.giganews.com!nntp.giganews.com!novia!news-out1.kabelfoon.nl!newsfeed.kabelfoon.nl!xindi.nntp.kabelfoon.nl!213.132.189.2.MISMATCH!multikabel.net!feed20.multikabel.net!amsnews11.chello.com!amsnews14.chello.com!amstwist00.POSTED!53ab2750!not-for-mail
References: <BcKdnSEwnK3VLO3ZnZ2dnUVZ8qqdnZ2d@scarlet.biz>

Show Full Headers
Complete Article Headers
X-Google-Thread: fcea4,37a6262056c42914
X-Google-Thread: 107324,37a6262056c42914
X-Google-Thread: 111b97,37a6262056c42914
X-Google-Attributes: gidfcea4,gid107324,gid111b97,public
X-Google-Language: DUTCH,ASCII-7-bit
Path: arc1-ca.pugleaf.net!g2news2.google.com!news3.google.com!border1.nntp.dca.giganews.com!border2.nntp.dca.giganews.com!nntp.giganews.com!novia!news-out1.kabelfoon.nl!newsfeed.kabelfoon.nl!xindi.nntp.kabelfoon.nl!213.132.189.2.MISMATCH!multikabel.net!feed20.multikabel.net!amsnews11.chello.com!amsnews14.chello.com!amstwist00.POSTED!53ab2750!not-for-mail
From: "Carl Colijn" <carl_colijn@hotmail.com>
Newsgroups: be.comp.programming,nl.comp.programmeren,nl.internet.www.server-side
References: <BcKdnSEwnK3VLO3ZnZ2dnUVZ8qqdnZ2d@scarlet.biz>
Subject: Re: Meertalige website
Lines: 124
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2900.2869
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869
X-RFC2646: Format=Flowed; Response
Message-ID: <jCecg.720$YI3.541@amstwist00>
Date: Mon, 22 May 2006 10:27:59 +0200
NNTP-Posting-Host: 213.93.184.172
X-Complaints-To: abuse@chello.nl
X-Trace: amstwist00 1148286479 213.93.184.172 (Mon, 22 May 2006 10:27:59 MEST)
NNTP-Posting-Date: Mon, 22 May 2006 10:27:59 MEST