Daniel: Anfängerin braucht Hilfe - Navigation über URL

Beitrag lesen

Ahoi fastix®,

Wir testen, ob Sprache gesetzt ist, ansonsten setzten wir diese auf deutsch:

if (!isset($_GET['lang']) {
  $_GET['lang']='de';
}

  
Also ich hab das ganze etwas "genauer" bei einem von mir erstellten  
projekt und setzt nicht gleich automatisch auf deutsch. allerdings  
gings bei mir um deutsch/französisch statt deutsch/englisch, kann man  
ja aber anpassen.  
~~~php
  
    if(isset($_GET['lang']))  
    {  
      if($_GET['lang'] == "de" || $_GET['lang'] == "fr")  
      {  
        $anzeige_sprache = $_GET['lang'];  
      }  
      else  
      {  
        $suchsprachen = array ('de', 'fr');  
        $anzeige_sprache = lang_getfrombrowser ($suchsprachen, 'de', null, false);  
      }  
    }  
    else  
    {  
      $suchsprachen = array ('de', 'fr');  
      $anzeige_sprache = lang_getfrombrowser ($suchsprachen, 'de', null, false);  
    }  
  
// Browsersprache ermitteln  
function lang_getfrombrowser ($sprachen_array, $stnd_sprache, $sprachen_variable = null, $strict_mode = true)  
{  
  // $_SERVER['HTTP_ACCEPT_LANGUAGE'] verwenden, wenn keine Sprachvariable mitgegeben wurde  
  if ($sprachen_variable === null)  
  {  
    $sprachen_variable = $_SERVER['HTTP_ACCEPT_LANGUAGE'];  
  }  
  // wurde irgendwelche Information mitgeschickt?  
  if (empty($sprachen_variable))  
  {  
    // Nein? => Standardsprache zurückgeben  
    return $stnd_sprache;  
  }  
  // Den Header auftrennen  
  $aktezptierte_sprachen = preg_split('/,\s*/', $sprachen_variable);  
  // Die Standardwerte einstellen  
  $akt_sprache = $stnd_sprache;  
  $akt_quality = 0;  
  // Nun alle mitgegebenen Sprachen abarbeiten  
  foreach ($aktezptierte_sprachen as $aktzepiterte_sprache)  
  {  
    // Alle Infos über diese Sprache rausholen  
    $res = preg_match ('/^([a-z]{1,8}(?:-[a-z]{1,8})*)'.  
                       '(?:;\s*q=(0(?:\.[0-9]{1,3})?|1(?:\.0{1,3})?))?$/i', $aktzepiterte_sprache, $matches);  
    // war die Syntax gültig?  
    if (!$res)  
    {  
      // Nein? Dann ignorieren  
      continue;  
    }  
    // Sprachcode holen und dann sofort in die Einzelteile trennen  
    $lang_code = explode ('-', $matches[1]);  
    // Wurde eine Qualität mitgegeben?  
    if (isset($matches[2]))  
    {  
      // die Qualität benutzen  
      $lang_quality = (float)$matches[2];  
    }  
    else  
    {  
      // Kompabilitätsmodus: Qualität 1 annehmen  
      $lang_quality = 1.0;  
    }  
    // Bis der Sprachcode leer ist...  
    while (count ($lang_code))  
    {  
      // mal sehen, ob der Sprachcode angeboten wird  
      if (in_array (strtolower (join ('-', $lang_code)), $sprachen_array))  
      {  
        // Qualität anschauen  
        if ($lang_quality > $akt_quality)  
        {  
          // diese Sprache verwenden  
          $akt_sprache = strtolower (join ('-', $lang_code));  
          $akt_quality = $lang_quality;  
          // Hier die innere while-Schleife verlassen  
          break;  
        }  
      }  
      // Wenn wir im strengen Modus sind, die Sprache nicht versuchen zu minimalisieren  
      if ($strict_mode)  
      {  
        // innere While-Schleife aufbrechen  
        break;  
      }  
      // den rechtesten Teil des Sprachcodes abschneiden  
      array_pop ($lang_code);  
    }  
  }  
  // die gefundene Sprache zurückgeben  
  return $akt_sprache;  
}  
  

MfG

--
Alle Angaben wie immer ohne Gewähr
LEISE IST SCHEISSE!