Browserweiche für Sprache

Flextone

Erfahrenes Mitglied
Hi

derzeit suche ich eine Browserweiche um Benutzer nach dem Land in dem die sich befinden innerhalb einer Seite zu redirecten.

Ich finde viele Sachen, aber nicht genau das was ich versuche zu finden :)

Kann man irgendwie einen Wert ermitteln, beispielsweise ein "de" oder "nl" ?

Ich wäre euch dankbar, wenn ihr mir helfen würdet.
 
Möchtest du wissen in welchem Land er sich befindet oder welche Sprache er bevorzugt? Land und Sprache sind nämlich zwei unterschiedliche Dinge.
 
Das kommt darauf an, wofür diese Information verwendet werden soll (Internationalisierung oder Lokalisierung).

Ein Beispiel zur Verdeutlichung: Wenn ich mich in einem fremdsprachigen Land aufhalte und von dort aus ins Internet gehe, möchte ich, wenn ich beispielsweise die Google-Startseite aufrufe, die deutschsprachige Version sehen und nicht die in der jeweiligen Landessprache (von denen es dann auch noch mehrere geben kann).
Wenn ich allerdings beispielsweise bei Ikea nach irgendwelchen Produkten suche, möchte ich nur über die Verfügbarkeit der Produkte in den Finialen in meiner Nähe informiert werden und nicht ob sie in irgendeiner Filiale verfügbar sind.
Beim ersten Beispiel ist also die Sprache, beim letzten mein derzeitiger Standpunkt entscheidend.
 
Es geht da drum innerhalb einer 2-sprachigen Webseite eine Weiche zu haben, das holländische User direkt in den holländischen Teil geleitet werden.
 
… weil die jeweiligen Inhalte sprachbezogen oder standortbezogen sind? Das ist ja gerade die entscheidende Frage.

Vielleicht waren meine Beispiel nicht deutlich genug. Worin genau unterscheiden sich die deutschen und niederländischen Inhalte? Sind sie niederländischen Inhalte beispielsweise nur auf die Niederlande bezogen (lokale Inhalte) und die deutschen auf Deutschland? Oder sind die Inhalte gleich und nur die Sprachen unterscheiden sich?
 
Habe nun folgendes gemacht:

PHP:
<?php
	$lang =  $_SERVER['HTTP_ACCEPT_LANGUAGE'];
	$new_lang = explode(",",$lang);
	
	if($_SERVER['REQUEST_URI'] == "/index.php"){
		if($new_lang[0] == 'nl-nl'){
			header("LOCATION: http://meine domain/dhddh.html");
		}else{
			header("LOCATION: http://meine domain/dhdhd.html");
		}
	}
?>

Nur weiß ich nicht ob es nl-nl heißt, bei meine Browser steht ja de-de.

Derzeit funktioniert die Weiche aber.

Kann man eine Liste im Netz beziehen, wo die Inhalte von $new_lang[0] definiert sind?
 
Der erste Teil bezeichnet die Sprache, der zweite die Region. „nl-nl“ heißt also Niederländisch wie es in den Niederlanden gesprochen wird („de-de“ analog dazu).
Wenn du also die Sprache ermitteln willst, benötigst du nur den ersten Teil von „xx-yy“. Denn es kann auch vorkommen, dass nur die Sprache angegeben ist.
Zudem solltest du den Präferenzparameter „q“ berücksichtigen. So ist „en;q=0.8, de“ mit „en;q=0.8, de;q=1“ äquivalent, was Deutsch als bevorzugte Sprache bezeichnet.

Aber du kannst dich glücklich schätzen, dass auch dies ein bereits behandeltes Thema ist. Und so gibt es dafür auch bereits eine passende Funktion: parseAcceptLanguageList().
 
Zurück