die bevorzugte sprache eines browsers feststellen
Der einfachste Weg um an Informationen über die bevorzugten Sprachen eines Browser - oder besser dessen Benutzer - besteht darin einen bei jeder Anfrage mitgesendeten HTTP-Header auszuwerten. Dieser Header wird PHP durch den Webserver über das Array $_SERVER bereitgestellt und heißt Accept-Language. Details zu diesem und anderen HTTP-Headern sind im RFC 2616 zu finden.
Folgendes kurze Skript benutze ich um Besucher meiner Webseite auf die deutsche bzw. englische Startseite umzuleiten. Hier als Beispiel der Header den mein Browser sendet:
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Die bevorzugten Sprachen sind jeweils durch Kommata voneinander getrennt, in dem Skript wird allerdings nur deutsch und englisch berücksichtig. Was der Parameter 'q' für eine Bedeutung hat ist im RFC nachzulesen ;-)
1 : <?php
2 : /**
3 : * detect the preferred language of the user agent
4 : *
5 : * @copyright Roy Kaldung <roy@kaldung.com>
6 : * @license http://www.php.net/license/3_01.txt PHP license
7 : */
8 :
9 : /**
10 : * split request header Accept-Language to switch
11 : * between english and german, default is english
12 : *
13 : * @param string $defaultlang preselected language, default en
14 : * @return string returns 'de' or 'en'
15 : */
16 : function detectLanguage($defaultlang = 'en')
17 : {
18 : $langlist = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
19 : $lang = $defaultlang;
20 : foreach($langlist as $curLang) {
21 : $curLang = explode(';', $curLang);
22 : /* use regular expression for language detection */
23 : if (preg_match('/(en|de)-?.*/', $curLang[0], $reg)) {
24 : $lang = $reg[1];
25 : break;
26 : }
27 : }
28 : return $lang;
29 : }
30 : ?>


