Beste,

Ik ben op dit ogenblik bezig met een meer-talige website. Nu loop ik hierin vast met mijn .htaccess.

Als de bezoeker voor het eerst komt moet hij 'doorgestuurd' worden naar 'www.domein.nl/nl/' omdat de bezoeker nog geen keuze heeft gemaakt.

Mijn vraag nu is van hoe zorg ik ervoor dat Nederlands als standaard taal aangesproken wordt en indien er gekozen is voor Engels dat de URL automatisch 'www.domein.nl/en/' wordt? en dat deze ook meegezonden wordt naar de 'normale url' zoals ik hieronder doe?.

RewriteRule ^(nl|en)/werken/$ index.php?module=werken.overzicht&taal=$1 [L]


Nu kwam ik deze tegen, alleen ik kon hier geen wegwijs mee worden.
http://www.phphulp.nl/php/forum/topic/meertalige-website-met-fake-folders-en-htaccess/68781/

Wie kan mij hiermee helpen? alvast bedankt voor de hulp!
Je zult dan met PHP moeten bijhouden welke taal de gebruiker heeft geselecteerd. Dat kan met bijvoorbeeld sessies. Als er geen sessie bestaat met dan is 'nl' de default:


<?php
if(!isset($_SESSION['language'])) {
    $_SESSION['language'] = 'nl';
}
?>


Je kan dan in elke link de goede taal gebruiken:


<a href="http://jewebsite.nl/<?php echo $_SESSION['language']; ?>/werken">Link</a>


Als iemand de taal wil veranderen pas je de sessie aan. De links veranderen dan dus ook. Je kan dan gewoon de RewriteRule gebruiken die je zelf had gepost. Het voordeel van een sessie is dat onthouden kan worden wat mensen hadden gekozen voor taal. ALs mensen dus later terugkomen op jewebsite.nl dan zou je ze meteen de goede taal kunnen voorschotelen. Daarom zou ik ook niet alle bezoekers die op de hoofdpagina komen meteen laten doorsturen naar jewebsite.nl/nl.
The Force op 31/05/2011 03:01:15

Het voordeel van een sessie is dat onthouden kan worden wat mensen hadden gekozen voor taal. ALs mensen dus later terugkomen op jewebsite.nl dan zou je ze meteen de goede taal kunnen voorschotelen.

Sessie verloopt toch na sluiten browser?

Als je nu een taal hebt gekozen, bijvoorbeeld Nederlands, dan zou je achter elke url '/nl/' moeten krijgen ook als een bezoek op een later tijdsstip terug keert.

Dit zal toch door middel van .htaccess dan moeten? Want als ik in mijn tekst editor een link aanmaak naar '/wereken-in-groningen/' dan zal hij toch automatisch '/nl/' ervoor moeten zetten.

Hoe krijg ik dat voor mekaar dan?
Bart, door de waarde van de sessie te echoën in je URL's.

<a href="/<?php echo $_SESSION['UserLanguage']; ?>/home">Home</a>


Of je geeft het NIET mee in de URL en je gaat de taalbestanden ophalen afhankelijk van de waarde van de sessie. En je kunt het dan uitbreiden met bijvoorbeeld .com en .de extensies.

<?php
# Snel en onveilig voorbeeldje:
include "includes/languages/" . $_SESSION['UserLanguage'] . ".php";
?>
@php Scripter

Ja dat kan in php zelf ja, maar wat nu als je het via een editor (wysiwyg) doet? hoe zorg ik er dan voor dat door middel van de gekozen of standaard taal dat die automatisch erachteraan komt?

dus dat niet in de bron staat: http://www.domein.nl/mijn-pagina/
maar dat hij automatisch er van maakt: http://www.domein.nl/en/mijn-pagina/

En daar loop ik op vast.
Bart, dan zul je misschien iets moeten proberen met str_replace.

Even een klein voorbeeldje, heb het niet getest en je moet het nog uitwerken omdat hij niet volledig is en nu alleen de URL pakt. Maar eigenlijk moet je de hele content van de editor onderzoeken:

<?php
function MakeMultiUrl ($InputString)
{
$BaseUrl = "http://www.jouwdomein.nl/";;
echo str_replace($BaseUrl, $BaseUrl . "/" . $_SESSION["UserLanguage"], $InputString);
}
?>

[size=xsmall]Toevoeging op 31/05/2011 16:50:17:[/size]

Wat ik ook niet snap. Je hebt toch ook voor elke taal een aparte inhoud ingevoerd op een editor? Dan kun je daar toch ook de URL's anders neerzetten?

[size=xsmall]Toevoeging op 31/05/2011 16:51:38:[/size]

Hallo, welkom op onze website. Klik hier voor de voorpagina!

Hello, welcome to our site. Click here for the homepage!

Reageren