Sie haben JavaScript deaktiviert. Vermutlich sind Sie ein Kollege und wollen nur sehen, ob meine Website auch ohne JavaScript funktioniert.
Andernfalls: Bitte aktivieren Sie JavaScript!

webdesign weisshart Startseite

zurück zum Standard-Style

Im Browser eingestellte Sprache erkennen

Hinweis:
Dieser Artikel ist älter als 18 Monate / wurde seit 18 Monaten nicht aktualisiert. Dies kann (muss aber nicht) dazu führen, dass der Artikel, und / oder darin beschriebene Techniken, nicht mehr aktuell sind. Bitte berücksichtigen Sie diesen Hinweis bei der Lektüre.

Das Wort Programmiersprache in vielen Sprachen als Wortwolke

Wer seine Webpräsenz für eine internationale Zielgruppe erstellt, wird seine Seiten möglicherweise in mehreren Sprachen anbieten. Üblicherweise gibt es für diesen Zweck gleich am Seitenanfang entsprechende Links zu den angebotenen Sprachen, häufig in Form von Flaggen-Icons.
Die Möglichkeit zur Umschaltung sollte auf jeder einzelnen Seite angeboten werden (Besucher kommen u. U. über sog. deep links auf die Seite); und selbstverständlich sollte die getroffene Wahl im Browser gespeichert werden, z. B. per Cookie.

Wünschenswert wäre es nun, dass der Besucher beim erstmaligen Besuch der Site gleich die Sprache seiner Wahl vorfindet. Möglich wird dies, indem man per PHP die im Browser des Besuchers eingestellte bevorzugte Sprache auswählt.

Dein Browser liest am liebsten in folgender Sprache: Deutsch.

Abhängig von obigem Statement – die Sprache wurde per PHP automatisch ausgelesen – kann man nun mit verschiedenen Techniken – z. B. mittels PHP – dem Leser den Inhalt in seiner Sprache anbieten.
Da die automatische Spracherkennung aber nicht in allen Fällen dem Wunsch des Lesers entspricht – Beispiel: Internet Café – muss auf jeden Fall noch eine manuelle Auswahl angeboten werden. Und diese manuelle Auswahl muss natürlich die automatische Auswahl überschreiben.

Wer die Spracherkennung selbst ausprobieren will, kann dazu in seinem Browser eine andere Standardsprache einstellen.

Wichtig:

  1. Wenn ein Cookie gesetzt ist, weil der Besucher bei einem früheren Besuch der Site eine Sprache gewählt hat, dann hat dies auf jeden Fall Vorrang vor der Abfrage der Browser-Standardsprache.
  2. Auf jeder Seite gibt es einen Link (z. B. Icon) zur Auswahl der vom User bevorzugten Sprache. Die getroffene Wahl wird für spätere Besuche bzw. für alle anderen Seiten der Webpräsenz in einem Cookie gespeichert. Dieses Cookie (… siehe Punkt 1.)
  3. Die automatische Erkennung greift nur, wenn kein Cookie gesetzt ist.

Das PHP-Script

/** * Browsersprache ermitteln * * @param array allowed languages * @param string default language * @param mixed requested language (null = server default) * @param bool strict mode (default true) * @return string result language */ function lang_getfrombrowser ($allowed_languages, $default_language, $lang_variable = null, $strict_mode = true) { // $_SERVER['HTTP_ACCEPT_LANGUAGE'] verwenden, wenn keine Sprachvariable mitgegeben wurde if ($lang_variable === null) { $lang_variable = $_SERVER['HTTP_ACCEPT_LANGUAGE']; } // wurde irgendwelche Information mitgeschickt? if (empty($lang_variable)) { // Nein? => Standardsprache zurückgeben return $default_language; } // Den Header auftrennen $accepted_languages = preg_split('/,\s*/', $lang_variable); // Die Standardwerte einstellen $current_lang = $default_language; $current_q = 0; // Nun alle mitgegebenen Sprachen abarbeiten foreach ($accepted_languages as $accepted_language) { // 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', $accepted_language, $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)), $allowed_languages)) { // Qualität anschauen if ($lang_quality > $current_q) { // diese Sprache verwenden $current_lang = strtolower (join ('-', $lang_code)); $current_q = $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 $current_lang; } $allowed_langs = array ('en', 'fr', 'de'); $lang = lang_getfrombrowser ($allowed_langs, 'de', null, false);

Danke an wiki.selfhtml.org für das PHP-Script.

Creative Commons Lizenzvertrag

Artikeltexte und Code-Snippets: Creative Commons CC BY-SA 4.0
Medien (Bilder, Videos, Audios) sind evtl. urheberrechtlich geschützt.

1 Kommentar

  1. Frank schrieb am Donnerstag, 16.07.20 11:39 Uhr:

    DAAAANKE... Sehr nützlich. Das habe ich gesucht.

Über Ihren Kommentar zu diesem Artikel freue ich mich.
Wenn Sie aber Fragen haben, und eine Antwort erwarten, nutzen Sie bitte das Supportforum! Die Nutzung des Forums ist auch ohne Registrierung möglich.

? Anweisungen zur Eingabe von BB Code Wenn Javascript verfügbar ist, können Sie die obigen Schaltflächen zum Einfügen der folgenden Steuercodes verwenden (an der Cursorposition oder um gegebenenfalls markierten Text):

[b]als wichtig <strong>[/b] hervorgehobener Text
[c]Quellcode[/c] oder optisch hervorgehobenes Zitat