Also,
zuerst könnte man auf das .htaccess verzichten und es mit PHP lösen, und zwar gleich am Eingang.
Ich denke mir, dass die .htaccess kaum zu beeinflussen ist, was das Verhalten zur Laufzeit angeht.
Aber in PHP gibt es die Daten im Prinzip auch:
$_SERVER['HTTP_ACCEPT_LANGUAGE'];
Die Sprache des Browser (en), wie oben schon ausführlich für das .htaccess beschrieben.
Es gibt aber hier zum Teil ausführlichere Angaben, solche wie
Accept-Language: fr-fr,en-us;q=0.7,en;q=0.3
http://www.w3.org/Protocols/rfc2616/rfc ... ml#sec14.4
Das heißt, französisches Französisch wird hier bevorzugt aber wenn das nicht verfügbar ist, dann würde auch US-Englisch bevorzugt werden, aber zur Not auch anderes Englisch.
Den Qualitiy-Range
q=x habe ich noch nicht ganz durchschaut.
$_SERVER['HTTP_ACCEPT_CHARSET'];
Zum Beispiel
iso-8859-1 ist eine westliche Einstellung, also Osteuropa und Asien und der Rest außer USA und Kanada fallen damit weg.
Ist wie oben die Language (
en), dann wird es im Zusammenhang mit
iso-8859-1 sehr wahrscheinlich auch Englisch sein.
Aber eher nicht Chinesisch.
$_SERVER['HTTP_REFERER'];
Sollte ein Referrer (hier deutsche Schreibweise) angegeben sein und die Domain-Endung lautet
.cn, dann würde es zusammen mit
utf-8 und Language
cn ziemlich sicher auch Chinesisch sein.
$
_SERVER['HTTP_USER_AGENT'];
Was kann man damit machen? Das müsste man testen.
Zumindest mit ...
Code: Alles auswählen
<?php
echo $_SERVER['HTTP_USER_AGENT'] . "\n\n";
$browser = get_browser(null, true);
print_r($browser);
?>
... bekommt man auch sowas hier:
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040803 Firefox/0.9.3
Da steckt die Sprache drin, aber auch das Betriebssystem und der Browser.
Angenommen es ist ein russisches oder chinesisches Betriebssystem samt deren eventuellen eigenen Browser und alles obere passt auch dazu, dann wäre es ein weiterer Hinweis auf die einzustellende Sprache.
Natürlich kann man das bei eigen programmierten Robots das ganz nach belieben und in stetem Wechsel rein schreiben, aber wer macht das schon
$_SERVER['REMOTE_ADDR'];
Die IP-Adresse ist einer der Haupthinweise und daran kann man meistens erkennen, woher jemand kommt.
Die paar Wenige, die eine IP-Farm besitzen und das mit dem User_Agent Profil bunt kombinieren, lassen wir mal gedanklich weg
Es geht recht schnell, wenn man eigene IP-Listen pflegt und die abgleicht mit der Remote_addr.
Aber die Liste muss man halt aktuell halten.
$_SERVER['REMOTE_HOST'];
Zusammen mit der Remote_addr kann man damit den Hostnamen ermitteln, was es ohne Liste leichter macht.
Code: Alles auswählen
<?php
$hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']);
echo $hostname;
?>
Ich nehme an, der Server holt sich zur Laufzeit vom DNS den Namen, und damit hat man die Domain-Endung.
$_SERVER['REQUEST_URI'];
Der Pfad ist nicht ganz unwichtig, sofern man AMR eingeschaltet hat.
Steht da
/de/index.html drin, dann soll es wahrscheinlich auch die Deutsche Sprache sein, die gesucht wird, selbst wenn der Besucher aus .ki (Kiribati) kommt. Dann ist es vermutlich ein Deutscher Urlauber.
So, nun soll das alles in richtiger Reihenfolge und richtig gewichtet ausgewertet werden.
Manche Daten sind ja gar nicht greifbar und manchen kann man nicht vertrauen.
Aber wenn man die Daten einfach abruft und sofern vorhanden, auch gleich gewichtet, bekommt man ein schönes Array mit Wichtung und jeweiligen Sprachen.
Damit sollte es möglich sein, ziemlich treffsicher die gewünschte Sprache einstellen zu können.
Natürlich, wenn ein Cookie gesetzt wurde, dann wird die dortige Spracheinstellung genommen.
... und irgendwie beschleicht mich das Gefühl, man müsste hier an die index.php rangehen.
Oder aber man leitet doch aus einer .htaccess ab auf eine Datei, die zuerst die Sprache anhand der Vorgehensweise ermittelt und dann direkt auf den Pfad weiter schaltet.
Was sagt eigentlich xmurrix dazu? Geht das überhaupt?
