Ländererkennung

Loomis

Mitglied Bunt
Ich habe eben einen Schnipsel gesehen:
PHP:
<?php
    $sprache = $_SERVER["HTTP_ACCEPT_LANGUAGE"];
    switch($sprache) {
    case 'de': $weiterleitung = 'include/de/index.php';break;
    case 'en': $weiterleitung = 'include/en/index.php';break;
    default: $weiterleitung = 'include/en/index.php';
    }
    header ("location: $weiterleitung");
?>
Wenn ich Lokal $_SERVER["HTTP_ACCEPT_LANGUAGE"] mir printen lasse, bekomm ich das zurück:
Code:
'de-de,de;q=0.8,en-us;q=0.5,en;q=0.3'
PHP.net sagt dazu:
Code:
 'HTTP_ACCEPT_LANGUAGE'
    Der Inhalt des Accept-Language:-Headers der aktuellen Anforderung, so vorhanden. Beispiel: 'en'.
Angeblich bekomme ich nur 'en' zurück. Hab ich das richtig verstanden? Wenn ja:

Gibt es einen Grund wieso ich nicht 'de' bekomme sondern 'de-de,de;q=0.8,en-us;q=0.5,en;q=0.3'?

Ich stehe da grade auf'm Schlauch glaub ich!
 
Der Codeschnipsel stand so in einem Tutorial (nicht hier).

Ich dachte mir schon das es nicht so einfach sein kann. Ich wollte nur sichergehen das ich nicht doch total blöde geworden bin ;)

Danke für den Link!
 
Generell ist solch eine automatische Weiterleitung auch nicht wirklich zeitgemäß bzw. "fair" dem Benutzer gegenüber.

Auch wenn es viele Seiten in deutsch gibt mittlerweile, lese ich manche lieber in Englisch... Andere wiederum in Deutsch.

Also lasst doch die Benutzer selbst wählen.

Nichts ist schlimmer als wenn man im Urlaub ist, nur mal eben surfen will, die Website einen aber nur in den schwedischen Bereich lässt, weil man grade eben in Schweden ist... ;)
 
Du solltest vor allem die unterschiedliche Bedeutung von Land und Sprache kennen. Länder sind geografisch klar definiert, Sprachen hingegen nicht. So lässt sich auch nicht von einer Sprache auf ein Land schließen und umgekehrt auch nicht.

Die Elemente der Liste von bevorzugten Merkmalen (in diesem Fall die Sprache) kann übrigens wie im Beispiel gezeigt auch einen Prioritätsfaktor (q=n, 0 ? n ? 1) haben. Damit muss das am meisten bevorzugte Merkmal nicht unbedingt auch das erste der Liste sein. So bedeutet beispielsweise Folgendes, dass Englisch gar nicht akzeptiert wird.
Code:
en;q=0, de
 
Da stimme ich dir voll und ganz zu, ich finde auch nichts schlimmer als irgenwo automatisch weitergeleitet zu werden.

Ich hatte nur die Idee, bei der Sprachauswahl die ich schon habe durch die Ländererkennung das passende Land vorzuheben. (z.b.: php.net -> german ist in fett).
 
Schau dir mal [post=1109201]diesen Algorithmus[/post] an. Mit der current()-Funktion kannst du dort unabhängig vom Schlüssel das ersten Element holen.
 
Zurück