Ik heb na wat knip en plak werk nu een goed werkend talen script gemaakt voor mijn website. Ik zit alleen nog met een probleempje.

Het kiezen van de voorkeur taal werkt goed maar zodra ik een andere link klik uit het menu van mijn site en daarna op een taal keuze knop dan werkt het niet meer.

Wie heeft hier een oplossing voor?


<?php

session_start();

if(isset($_COOKIE["langset"])){
$_SESSION['lang'] = $_COOKIE["langset"];
}

// Bevat de URL-variabele 'lang' niet minstens 2 tekens voor een
// korte taalcode, gebruik dan de HTTP-header 'Accept-Language':
if ((strlen($_SESSION['lang']) < 2) and (isset($_SERVER['HTTP_ACCEPT_LANGUAGE']))) {
    $_SESSION['lang'] = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
}

// $_SESSION['lang'] omzetten in kleine letters:
$_SESSION['lang'] = strtolower($_SESSION['lang']);

// Stel standaard taal in (indien deze nog niet is ingesteld)
if(isset($_SESSION['lang']) == false)
{
    $_SESSION['lang'] = 'en';
}

// Gebruik reguliere expressies om langere taalvoorkeuren
// te verwerken.
    if (ereg("en", $_SESSION['lang'])) {
        $_SESSION['lang'] = "en"; // Engels
    } elseif (ereg("nl", $_SESSION['lang'])) {
        $_SESSION['lang'] = "nl"; // Nederlands
    } elseif (ereg("de", $_SESSION['lang'])) {
        $_SESSION['lang'] = "de"; // Duits
    } else {
        $_SESSION['lang'] = "en"; // Engels
    }

if(isset($_GET['lang'])) // Kijk of de gebruiker de taal wil wijzigen
{
    $lang= strtolower(trim($_GET['lang']));

    if(in_array($lang, array('nl', 'de', 'en'))) // Kijk of de taal beschikbaar is binnen deze website
    {
        $_SESSION['lang'] = $lang;
    }
}

// Taalcode voor HTTP en HTML, en paginatitel instellen:
switch ($_SESSION['lang']) {
    case "nl": // Nederlands
        $taalcode = "nl";
        $title    = "Talen in Europa";
        break;
    case "en": // Engels
        $taalcode = "en";
        $title    = "Languages in Europe";
        break;
    case "de": // Duits
        $taalcode = "de";
        $title    = "Sprachen in Europa";
        break;
    default: // Engels is de standaardinstelling
        $taalcode = "en";
        $title    = "Languages in Europe";
}

// HTTP-headers instellen:
if (!headers_sent()) {
    header("Content-Language: " . $taalcode);
    header("Content-Type: text/html; charset=iso-8859-1");
}

setcookie ("langset", $_SESSION['lang'], time()+3600*24*365);

$pup = $_SERVER['REQUEST_URI'];

?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html lang="<?php echo $taalcode; ?>">
<head>

<meta http-equiv="Content-Language" content="<?php echo $taalcode; ?>">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

	<title><?php echo $title; ?></title>

</head>
<body lang="<?php echo $taalcode; ?>">

<a href="?pag=pag1">pag 1</a> | <a href="?pag=pag2">pag 2</a><br><br>

<form action="/" method="get">
<select name="newlanguage" onChange="top.location.href=this.options[this.selectedIndex].value">
<option value="<?php if ($pup == "/test-4" || $pup == "/test-4/" || $pup == "/test-4/index.php"){ echo "?lang=nl"; } else { echo $_SERVER['REQUEST_URI']."&lang=nl"; } ?>" <?php if ($_SESSION['lang'] == nl){ echo "selected"; } ?>>Nederlands</option>
<option value="<?php if ($pup == "/test-4" || $pup == "/test-4/" || $pup == "/test-4/index.php"){ echo "?lang=en"; } else { echo $_SERVER['REQUEST_URI']."&lang=en"; } ?>" <?php if ($_SESSION['lang'] == en){ echo "selected"; } ?>>English</option>
<option value="<?php if ($pup == "/test-4" || $pup == "/test-4/" || $pup == "/test-4/index.php"){ echo "?lang=de"; } else { echo $_SERVER['REQUEST_URI']."&lang=de"; } ?>" <?php if ($_SESSION['lang'] == de){ echo "selected"; } ?>>Deutch</option>
</select></form>

<br>

<?php

$id = $_GET['pag'];

switch($id) {

case "index":
if ($_SESSION['lang'] == nl){
include ("includes/languages/dutch.php");
}
if ($_SESSION['lang'] == en){
include ("includes/languages/english.php");
}
if ($_SESSION['lang'] == de){
include ("includes/languages/german.php");
}
break;

case "pag1":
if ($_SESSION['lang'] == nl){
include ("includes/languages/dutch.php");
}
if ($_SESSION['lang'] == en){
include ("includes/languages/english.php");
}
if ($_SESSION['lang'] == de){
include ("includes/languages/german.php");
}
break;

case "pag2":
if ($_SESSION['lang'] == nl){
include ("includes/languages/dutch2.php");
}
if ($_SESSION['lang'] == en){
include ("includes/languages/english2.php");
}
if ($_SESSION['lang'] == de){
include ("includes/languages/german2.php");
}
break;

default:
if ($_SESSION['lang'] == nl){
include ("includes/languages/dutch.php");
}
if ($_SESSION['lang'] == en){
include ("includes/languages/english.php");
}
if ($_SESSION['lang'] == de){
include ("includes/languages/german.php");
}
break;
}

?>

</body>
</html>

Ik zou de switch doen op session['lang'] i.p.v. op de pagina.(onder aan je script)

En ik mis de afhandeling van je formulier waar je de talen mee wisselt
De taal word gewisselt met

<form action="/" method="get">
<select name="newlanguage" onChange="top.location.href=this.options[this.selectedIndex].value">
<option value="<?php if ($pup == "/test-4" || $pup == "/test-4/" || $pup == "/test-4/index.php"){ echo "?lang=nl"; } else { echo $_SERVER['REQUEST_URI']."&lang=nl"; } ?>" <?php if ($_SESSION['lang'] == nl){ echo "selected"; } ?>>Nederlands</option>
<option value="<?php if ($pup == "/test-4" || $pup == "/test-4/" || $pup == "/test-4/index.php"){ echo "?lang=en"; } else { echo $_SERVER['REQUEST_URI']."&lang=en"; } ?>" <?php if ($_SESSION['lang'] == en){ echo "selected"; } ?>>English</option>
<option value="<?php if ($pup == "/test-4" || $pup == "/test-4/" || $pup == "/test-4/index.php"){ echo "?lang=de"; } else { echo $_SERVER['REQUEST_URI']."&lang=de"; } ?>" <?php if ($_SESSION['lang'] == de){ echo "selected"; } ?>>Deutch</option>
</select></form>


Kun je me eens een voorbeeld laten zien wat je bedoeld met "Ik zou de switch doen op session['lang'] i.p.v. op de pagina.".

Ik kom er niet uit hoe ik dat hyperlink/switch probleem op los.
Of ik krijg iets als
/?pag=pag2?lang=en
dat werkt natuurlijk niet. Of ik krijg het wel werkend maar dan krijg ik zoiets als
/?pag=pag2&lang=en&lang=nk&lang=de&lang=en
als ik meerdere keren op een taal keuze klik.

Reageren