Clientsprache ermitteln
lutz
- javascript
0 André Laugks0 lutz0 Sven Rautenberg0 lutz
0 Sebastian Becker
Hallo,
Für meine nächste Siete plane ich einen englischen und deutshen teil der webseite. Um die sprache des users auszuwählen soll er sie zum einem per link selbst auswählen können. auf der anderen seite möchte ich ihm aber die für ihn passende sprahce sofort anbieten.
d.h. wenn jemand aus deutschland kommt bekommt er den deutschen part serviert, ansonsten den englischen teil. das ergebnis der abrfrage wird dann an php übermittelt was dann die jeweils passend sprache aus meiner datenbank liefert.
kann man das irgendwie über js (oder php - wahrscheinlich wird das nicht gehen, da ja serverseitig) realisieren?
danke. lutz
Hallo!
kann man das irgendwie über js ...
http://selfhtml.teamone.de/javascript/objekte/navigator.htm#language
...(oder php - wahrscheinlich wird das nicht gehen, da ja serverseitig) realisieren?
Doch, den der Client(Browser) liefert ja Infos.
-> $HTTP_ACCEPT_LANGUAGE
http://www.php.net/manual/de/print/language.variables.predefined.php
MfG, André Laugks
danke dir, ganau das was ich gesucht habe.
manchmal sind die dinge doch so sch;n einfach
if(navigator.language.indexOf("en")>-1)
h'tta man selbst drauf kommen k;nnen.
gr[-e lutz
Aloha!
manchmal sind die dinge doch so sch;n einfach
if(navigator.language.indexOf("en")>-1)
h'tta man selbst drauf kommen k;nnen.
Du machst dir mehr Freunde, wenn du serverseitig abfragst. Vorteile sind:
1. Du kannst sofort auf der ersten Seite schon die gewünschte Sprache ausgeben. Mit Javascript mußt du erstmal eine Seite laden, die Sprache feststellen und dann erneut eine Seite laden.
2. Der Benutzer kann sich die Sprache, die er bevorzugt, aussuchen, wahlweise auch mehrere Sprachen, die er kennt/kann. Mit navigator.language erhälst du die Sprache der Browsers - die kann man sich nicht aussuchen, und das ist auch immer nur eine.
Ich zum Beispiel bevorzuge englische Browser (weil ich damit mal so angefangen habe - keine Umgewöhnung in den Preferences - und weil es dort meist die aktuelleren Versionen gibt, bzw. die Updates eher kommen). Ich bevorzuge als Webseitensprache aber eindeutig deutsch (wenngleich ich mit Englisch auch was anzufangen weiß), deshalb stelle ich meine Browser alle so ein.
Mit anderen Worten: Werte serverseitig den HTTP-Header "Accept-Language" aus (in PHP unter $_SERVER['HTTP_ACCEPT_LANGUAGE'] bzw. $HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'] immer erreichbar), und du wirst glücklich.
- Sven Rautenberg
hallo sven,
werde deinen weg über den HTTP-Header wählen.
dadurch wäre auch der umweg über js unnötig.
mache zwar schon ne weile php abe mit HTTP-Header noch nichts zutun gehabt, was erzeugt des den header? dachte immer er wird vom browser erzeugt - was ja bei dir bedeuten würde, dass du englisch vorgestzt bekommst. wenn der header vom system (win/mac etc.) generiert wird (browser übermittelt quasi die systemsprache) müsste es ja funktioneren
lutz unter palmem
Aloha!
werde deinen weg über den HTTP-Header wählen.
dadurch wäre auch der umweg über js unnötig.
Fein! :)
mache zwar schon ne weile php abe mit HTTP-Header noch nichts zutun gehabt, was erzeugt des den header? dachte immer er wird vom browser erzeugt - was ja bei dir bedeuten würde, dass du englisch vorgestzt bekommst. wenn der header vom system (win/mac etc.) generiert wird (browser übermittelt quasi die systemsprache) müsste es ja funktioneren
Der Browser schickt die ganzen Header (und ein Proxy kann auf dem Weg zum Server diese nochmal beliebig verändern).
Benutzt du IE? Dann geht mal in die Systemsteuerung -> Internetoptionen -> Tab "Allgemein" -> Button "Sprachen...".
Dort kannst du einstellen (hinzufügen/entfernen/umordnen), welche Sprachen du lesen möchtest. Bei mir steht da derzeit nur "Deutsch [de]" (weil ich den IE nur zum Testen nehme, nicht zum Surfen), mein Surfbrowser hat da "Deutsch [de]" und danach "Englisch [en]" stehen - also lieber deutsche als englische Versionen.
Netscape und Opera (und die ganzen anderen Browser) haben diese Einstellmöglichkeit in ihren Einstellungen versteckt. Voreingestellt ist die Sprache, die der Browser selbst verwendet (englische Browser wollen englische Seiten), aber im Prinzip ist die Angabe frei userkonfigurierbar. Und deshalb besser, als navigator.language.
- Sven Rautenberg
horch was kommt von drausen rein -> es ist deutsch
habs grad mal im ie6 ausprobiert und per php mir wieder per echo ausgeben lassen.
werde jetzt mal ne if abfrage bauen und dann damit ein wenig rumexperimentieren.
damit ist ja nun auch möglich komplett auf dem user zugeschnittene seiten anzubeiten, mich stört ja auch andauernd auf deutsch klicken zu müssen um dann erst diese sprache zu bekommen. damit wird dies aber bei meiner nächsten seite hoffentlich der vergangenheit angehören.
danke dir nochmal
so long
lutz
werde deinen weg über den HTTP-Header wählen.
Hallo, Lutz,
kann man das irgendwie über js (oder php - wahrscheinlich wird das nicht gehen, da ja serverseitig) realisieren?
Mit JavaScript geht das ungefähr so:
var redirectURL = "http://www.domainname.de";
if (navigator.appName == 'Netscape') // bw.ns
{var lang = navigator.language;}
else
{var lang = navigator.userLanguage.substr(0,2);} // navigator.browserLanguage
// if(getCookie(cookie_prefix + "_lang"))lang = getCookie(cookie_prefix + "_lang"); // nur wenn die bevorzugte Sprache in einem Cookie gespeichert wird
// german
if (lang.indexOf("de")==0)
{window.location.replace(redirectURL + '/index_de.htm')}
// default to english
else
window.location.replace(redirectURL + '/index_en.htm')
Mit PHP ginge es ungefähr so:
<?php
$domain_name = "http://www.domainname.de";
$lang = strtok($HTTP_ACCEPT_LANGUAGE,","); // language codes are comma delimited
while ($lang)
{
if ereg((strstr($lang,"de")
{
header("Location: ".$domain_name."/index_de.htm");
exit;
}
$lang = strtok(",");
}
header("Location: ".$domain_name."/index_en.htm"); // default
exit;
?>
Viel Spaß beim Testen,
Sebastian