Automatische Spracherkennung vom Browser

Fix&Foxi

Mitglied
Hallo Leute,

habe einen passenden Link gefunden zur auto. Sprachauswahl, leider ohne lähere erklährung

Blos mal wieder das Problem das ich nur bahnhof von php versehe :confused:

ich möchte die sache ohne die cookis gerne bewegstelligen

Soll ich denn code in denn header der index.html schreiben?

oder muss ich ein neues (html?) anlegen und da denn php code schreiben und die sache dann als index.html(php?) speichern?

PHP:
<?php
 $sprache = getenv('HTTP_ACCEPT_LANGUAGE');

 if(ereg("es",$sprache)) { header("Location: index_e.html");
}

if(ereg("en",$sprache)) { header("Location: index_gb.html");
}
 if(ereg("de",$sprache)) { header("Location: index_d.html");
}
 ?>


Hier der Link von meiner Seite

muss ich da MySQL technisch noch was machen?
 
wenn dann php code (oder php und html gemischt) immer als php file speichern.
Hier reicht es wenn du den code als index.php speicherst.
 
habe jetzt probiert und es klappt nicht

die alte index.html umbenannt in index_es.html

neues dokument php gespeichert als index.php und denn code reingeschrieben:

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<!-- TemplateBeginEditable name="doctitle" -->
<title>Unbenanntes Dokument</title>
<!-- TemplateEndEditable -->
<!-- TemplateBeginEditable name="head" -->
<!-- TemplateEndEditable -->
</head>

<body>
<?php 
 $sprache = getenv('HTTP_ACCEPT_LANGUAGE'); 

 if(ereg("es",$sprache)) { header("Location: index_es.html"); 
} 

if(ereg("en",$sprache)) { header("Location: index_gb.html"); 
} 
 if(ereg("de",$sprache)) { header("Location: index_d.html"); 
} 
 ?>
</body>
</html>


habe auch mal probiert denn code in denn header zuschreiben ....klappt auch nicht.


Bitte schreib mir einer mal....was soll ich genau machen
 
natürlich geht es nicht ich hab auch nicht gesagt das du da noch was dazu tun sollst :D

Du hast hier erst eine Ausgabe und willst dann einen header setzen.
Das geht nicht das gibt nen Error.
Der Code oben ohne alles in deine PHP ist die Lösung!

Aber ein Tip mach es besser so:
PHP:
<?php 
$sprache = @getenv('HTTP_ACCEPT_LANGUAGE'); 

if(ereg("es",$sprache)) { 
      header("Location: index_es.html"); 
}  
else if(ereg("en",$sprache)) { 
      header("Location: index_gb.html"); 
} 
else if(ereg("de",$sprache)) { 
      header("Location: index_d.html"); 
} 
else{ 
      header("Location: index_default.html"); 
} 
 ?>

Das leitet zu der default seite falls der browser des users den wert unterdrückt.
(kannst auch de oder en dafür verwenden.)
 
Zuletzt bearbeitet:
wunderbar das klappt prima......jetzt muss ich nur noch wissen wie man Safari auf eine andere sprachwahl umstellt, damit ich das mal in - es, e- testen kann.
 
Im Safari 4 kann man in den Einstellungen die Option Menü "Entwickler" in der Menüleiste anzeigen auswählen, welche du in dem Tab Erweitert findest. Dann hast du diesen Menüpunkt und kannst unter Benutzer-Agent > Anderer ... deine gewünschte Sprache eingeben.
 
Deine einfache Falls-enthalten-Prüfung reicht leider nicht aus. Denn Accept-Language ist eine bewertete Liste von Sprachen und das alleinige Vorkommen einer Sprache sagt nichts über ihre Bewertung aus. So kann etwa eine andere Sprache eine höhere Bewertung haben oder sogar explizit ausgeschlossen werden.
Du solltest besser die Liste der Werte parsen und die besten Übereinstimmung auswählen.
 
Benutzer-Agent > Anderer ... deine gewünschte Sprache eingeben.


Klappt leider nicht, er geht immer wieder auf die index_d.html (deutsch)


Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_4_11; en-en) AppleWebKit/531.9 (KHTML, like Gecko) Version/4.0.3 Safari/531.9

auch spanisch klappt nicht:
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_4_11; es-es) AppleWebKit/531.9 (KHTML, like Gecko) Version/4.0.3 Safari/531.9

Du solltest besser die Liste der Werte parsen und die besten Übereinstimmung auswählen.
:confused::confused::confused:

Sorry, ich versehe nur bahnhof.....heißt das jetzt, meine umsetztung t so wieso nicht?
Kannst du mir da schreiben was ich machen soll!

Habe gerade die Info von einen Kumpel bekommen, dass es nicht sauber auf alles Browsern t:

"Scheint aber nur im IE zu funktionieren. Beim Firefox bekomme ich die englische Sprachversion geliefert"

Habt ihr da neh idee woran das liegen könnte?:(

Wie schon gesagt, im Safari kommt immer die deutsche version
 
PHP:
function GetLangByAL(){return substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);}

Die komplett Lösung möchte ich nicht posten ;)
 
Zurück