Article View: be.comp.programming
Article #765Re: Meertalige website
From: Carl Colijn
Date: Mon, 22 May 2006 08:27
Date: Mon, 22 May 2006 08:27
122 lines
6441 bytes
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-mailReferences:
<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