screenpx: Sprachabfrage des Browsers

Beitrag lesen

hi danke für den Tip,

aber

wie schreibe ich das php so um das er bei zB englischer Spracheinstellung auf ein EN-Verzeichnis weiterleitet ???

  • kann leider noch nich php:

01 <?php
02 // Browsersprache ermitteln
03 function lang_getfrombrowser ($allowed_languages, $default_language, $lang_variable = null, $strict_mode = true) {
04         // $_SERVER['HTTP_ACCEPT_LANGUAGE'] verwenden, wenn keine Sprachvariable mitgegeben wurde
05         if ($lang_variable === null) {
06                 $lang_variable = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
07         }
08
09         // wurde irgendwelche Information mitgeschickt?
10         if (empty($lang_variable)) {
11                 // Nein? => Standardsprache zurückgeben
12                 return $default_language;
13         }
14
15         // Den Header auftrennen
16         $accepted_languages = preg_split('/,\s*/', $lang_variable);
17
18         // Die Standardwerte einstellen
19         $current_lang = $default_language;
20         $current_q = 0;
21
22         // Nun alle mitgegebenen Sprachen abarbeiten
23         foreach ($accepted_languages as $accepted_language) {
24                 // Alle Infos über diese Sprache rausholen
25                 $res = preg_match ('/^([a-z]{1,8}(?:-[a-z]{1,8})*)'.
26                                    '(?:;\s*q=(0(?:.[0-9]{1,3})?|1(?:.0{1,3})?))?$/i', $accepted_language, $matches);
27
28                 // war die Syntax gültig?
29                 if (!$res) {
30                         // Nein? Dann ignorieren
31                         continue;
32                 }
33
34                 // Sprachcode holen und dann sofort in die Einzelteile trennen
35                 $lang_code = explode ('-', $matches[1]);
36
37                 // Wurde eine Qualität mitgegeben?
38                 if (isset($matches[2])) {
39                         // die Qualität benutzen
40                         $lang_quality = (float)$matches[2];
41                 } else {
42                         // Kompabilitätsmodus: Qualität 1 annehmen
43                         $lang_quality = 1.0;
44                 }
45
46                 // Bis der Sprachcode leer ist...
47                 while (count ($lang_code)) {
48                         // mal sehen, ob der Sprachcode angeboten wird
49                         if (in_array (strtolower (join ('-', $lang_code)), $allowed_languages)) {
50                                 // Qualität anschauen
51                                 if ($lang_quality > $current_q) {
52                                         // diese Sprache verwenden
53                                         $current_lang = strtolower (join ('-', $lang_code));
54                                         $current_q = $lang_quality;
55                                         // Hier die innere while-Schleife verlassen
56                                         break;
57                                 }
58                         }
59                         // Wenn wir im strengen Modus sind, die Sprache nicht versuchen zu minimalisieren
60                         if ($strict_mode) {
61                                 // innere While-Schleife aufbrechen
62                                 break;
63                         }
64                         // den rechtesten Teil des Sprachcodes abschneiden
65                         array_pop ($lang_code);
66                 }
67         }
68
69         // die gefundene Sprache zurückgeben
70         return $current_lang;
71 }
72 ?>

Hi,

ich suche ein JavaScript

was passiert dann ohne?

das eine Sprachabfrage des Browsers vornimmt und dann je nachdem einen entsprechende Weiterleitung gibt.

Idealwerweise lässt du dies deinen Server entscheiden:

http://www.google.at/search?q=content+negotiation+sprache
 http://aktuell.de.selfhtml.org/tippstricks/php/httpsprache/

ähnlich dem Beispiel für Browsertypabfrage:

<script LANGUAGE="JavaScript">

Nope. Es heißt <script type="text/javascript">

var browser = navigator.appName

Darin kann alles und nichts stehen -- es ist somit unzuverlässig.

Grüße,
 Roland