Linuchs: bitte prüfen: Vom Browser angeforderte Sprachen erkennen

Beitrag lesen

problematische Seite

Moin,

aufgrund des Fadens „Dropdown-Menu zur Sprachenerweiterung“ habe ich nochmal meine eigene Sprachverwaltung kritisch beäugt.

Ich empfinde Webseiten befremdlich, die fast leer sind und nach der gewünschten Sprache fragen. Die hat der Browser ja schon beim Anfordern mitgeliefert.

Ich hatte bisher nur die erste Sprache von sowas wie ru,en;q=0.9,es;q=0.8,de;q=0.7 aus $_SERVER['HTTP_ACCEPT_LANGUAGE'] ausgewertet.

Bitte checked mal, ob das Durchlaufen der Browser-Sprachen so korrekt ist. Ich suche im Startprogramm nach de, en oder nl, die ich anbieten kann:

***********************
 * 2020-08-02
 * Sprache fuer dieses Programm p510 festlegen
 * ******************************************** */
echo "<p class=em08>";
if ( $_REQUEST['lg'] ) {
  // User-Auswahl hat Vorrang
  $bia_lg = $_REQUEST['lg'];

} else if ( $_SERVER['HTTP_ACCEPT_LANGUAGE'] ) {
  // Prioritaet 2: Browser-Angaben auswerten
  // Trenne die Sprachen voneinander
  $arr_bia_lg  = explode( ',', $_SERVER['HTTP_ACCEPT_LANGUAGE'] ); // ru,en;q=0.9,es;q=0.8,de;q=0.7
  // q= eliminieren, die erste UEbereinstimmung zaehlt
  echo "Checking your Browser-Languages ...";
  for ( $i=0; $i<count( $arr_bia_lg ); $i++ ) {
    $arr_mist = explode( ";", $arr_bia_lg[$i] );
    echo " " . $arr_mist[0];
         if ( $arr_mist[0] == 'de' )  { echo '*'; $bia_lg = 'de'; break; }
    else if ( $arr_mist[0] == 'en' )  { echo '*'; $bia_lg = 'en'; break; }
    else if ( $arr_mist[0] == 'nl' )  { echo '*'; $bia_lg = 'nl'; break; }
  }
}
     if ( $bia_lg == 'de' ) { $p000_lg = 'de';  $lg_ndx = 1; }
else if ( $bia_lg == 'en' ) { $p000_lg = 'en';  $lg_ndx = 2; }
else if ( $bia_lg == 'nl' ) { $p000_lg = 'nl';  $lg_ndx = 3; }
else                        { $p000_lg = 'de';  $lg_ndx = 1; echo ". remso-languages (de en nl) missed, 'de' delivered"; }
echo "</p>";

Wenn überhaupt nichts zutrifft (Google kommt sprachlos daher) nehme ich de, weil mit Abstand die meisten Termine in deutscher Sprache eingegeben werden.

Falls der Leser - aus welchem Grund auch immer - einen abweichenden Parameter, z.B. lg=fr, beim Aufruf mitgibt, wird dieser bei Programmwechsel weitergereicht.

$bia_lg ist die vom Menschen (nicht vom Browser) gewünschte Sprache, $p000_lg die vom einzelnen Programm ermittelte.

Falls irgendwann ein Folgeprogramm französisch kann, voila ...

In den Platzhalter-Dateien sind die Sprachen im Text wie ein Array gelistet:

<p class=hinweis>###Keine Veranstaltung für diese Auswahl gefunden###No event found for this selection###Geen evenement gevonden voor deze selectie###</p>

und $lg_ndx verweist auf das n-te Element.

Gruß, Linuchs