kaldung.com

die website von roy kaldung

 

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 : ?>
© 2003-2006 Roy Kaldung • kontakt impressum technisches datenschutz
letzte Änderung:  2006-12-14 22:01 CET
Valid XHTML 1.0 Strict Valid CSS!