Hey,

Binnenkort wil ik een site ondersteuning geven voor meerdere talen (Nederlands, Engels, Duits en evt. nog enkele).

Ik was aan het bedenken hoe je dat het beste kon doen, zoals de verschillende stukken tekst opslaan in een database, allemaal aparte pagina's maken en/of in aparte dirs zetten, of de stukken tekst in een soort configuratiebestand zetten.

Ik vroeg mij af wat hiervoor de meest gebruikelijke manier is en wat aan te raden valt? Ik kan me nl. voorstellen dat er voor- en nadelen zijn van de genoemde voorbeelden.
Doe gewoon de pagina's dubbel en vertaalze.
Alle teksten, knoppen, titels, etc. als variabelen defineren en in xml-bestanden opnemen. Wanneer je een goed xml-schema hebt opgesteld, kun je de xml-bestanden direct laten valideren en kun je met 100% zekerheid zeggen dat je website in taal X helemaal klaar is.

Zeker met PHP5 is het gebruik van xml eenvoudig.

Meer info over xml en xml-schema kun je vinden op www.w3schools.com
Maar om echt even op je vraag te komen...
Ik denk dat aparte dirs het makkelijkst is
Ik gebruik in zulke gevallen deze structuur:


|- lng
|   |- dutch.php
|   |- english.php
|- index.php
|- rest.php


Dan zijn de taal-bestanden gewone PHP-bestanden met daarin een grote array met de teksten die ik nodig heb:

<?php
// dutch.php
$text[1001] = "Welkom";
$text[1002] = "Dit is mijn website!";
?>

<?php
// english.php
$text[1001] = "Welcome";
$text[1002] = "This is my website!";
?>

En vervolgens zorg ik dat ik op een manier bepaal wat de voorkeur van de bezoeker is: cookies, sessies, var in de URL, etc.

En dan op de pagina waar de tekst moet komen te staan doe je een controle voor welke taal en dan laat je de pagina zien:

<?php
// INDEX.PHP

// Check taal
if($_SESSION['taal']) {
$taal = $_$SESSION['taal'];
} else {
$taal = $default; // Bijv. uit een config, of $taal = "dutch";
}

// Taal invoegen
inlcude("lng/".$taal.".php");

// Pagina weergeven
echo "<h1>".$text[1001]."</h1>\n";
echo "<p>".$text[1002]."</p>\n";
?>

Gemakkelijk op deze manier is ook voor de gebruiker de taalkeuze te maken: lees gewoon de dir lng uit en je weet welke je hebt... :)

Elwin
Ik denk dat Elwins oplossing voor mij het beste is!

Lekker overzichtelijk en makkelijk aan te passen. Dit is natuurlijk ook toe te passen als je het in verschillende dirs doet, maar dan heb je toch meer bestanden en dus meer ruimte nodig.

Alle teksten, knoppen, titels, etc. als variabelen defineren en in xml-bestanden opnemen. Wanneer je een goed xml-schema hebt opgesteld, kun je de xml-bestanden direct laten valideren en kun je met 100% zekerheid zeggen dat je website in taal X helemaal klaar is.


Dat snap ik niet helemaal, maar dat komt misschien omdat ik niet zo'n ster ben in XML. Wel leuk om nog eens te leren in elk geval :)

Bedankt allen voor de verlichtende reacties :D

Reageren