Spracheweiche

xX Hardy Xx

Mitglied
Hallo,

ich habe ein Problem, was eigentlich nicht sein dürfte.

Situation:
Beim Besuch der Webseite, soll die Webseite der Browserspracheinstellung entsprechend ausgegeben werden. Ist die Sprache nicht vorhanden ist default = english. Von der Logik her müsste der folgende Code funktionieren - tut er aber nicht. Es wird immer die englische sprache genommen. Ich finde den Fehler nicht:(

PHP:
$sprache = explode(",", $_SERVER['HTTP_ACCEPT_LANGUAGE']);

if(!isset($_SESSION[lang_id])) {
         if(eregi('de',$sprache[0])){
                 $_SESSION[lang_id] = "1"; 
         }
         if(eregi('fr',$sprache[0])){
                 $_SESSION[lang_id] = "2";
         } else {
                 $_SESSION[lang_id] = "0";
         }
}
 
Zuletzt bearbeitet:
Hi,

bitte Code-Tags verwenden.

Ansonsten was gibt denn folgendes aus:

PHP:
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', 1);

$sprache = explode(",", $_SERVER['HTTP_ACCEPT_LANGUAGE']);

echo "<pre>";
var_dump($sprache);
echo "</pre>"

if(!isset($_SESSION[lang_id])) {
  if(eregi('de',$sprache[0])){
    $_SESSION[lang_id] = "1";
  }
  if(eregi('fr',$sprache[0])){
    $_SESSION[lang_id] = "2";
  } else {
    $_SESSION[lang_id] = "0";
  }
}

echo "<pre>";
var_dump($_SESSION);
echo "</pre>";
 
Der Fehler ist relativ simpel, denn der Code stimmt bis auf eine Tatsache.

Wenn die Session-Variable nicht gesetzt ist, sucht er erst ob es sich um die deutsche Sprache handelt, ist dies der Fall, wird diese Variable gesetzt und hat den Wert 1
Danach kommt eine if-Abfrage in der gefragt wird, ob die Sprache Französisch ist, wenn ja wird die Variable 2, wenn nein wird die Variable IMMER 0, d.h. du überschreibst den Wert 1 wieder und erhälst so natürlich 0.
Arbeite eher mit folgendem:
PHP:
if(!isset($_SESSION[lang_id])) {
    if(eregi('de',$sprache[0])){
        $_SESSION[lang_id] = "1"; 
    } elseif(eregi('fr',$sprache[0])){
        $_SESSION[lang_id] = "2";
    } else {
        $_SESSION[lang_id] = "0";
    }
}

Wenn ich mich nicht vertu, müsste das stimmen.
 
Eigentlich hatte es seinen Grund, warum ich nur den Code gepostet hatte. Manchmal muss man den Fehler einfach selbst finden :-)
 
Zurück