mike: erkennung des users und sprachumleitung

hallo forum,

ich probiere mit einem script herum, das automatisch ausliest, welche browser language der user nutzt.
anschließend soll er auf die betreffende seite umgeleitet werden
z.b.

en - englisch.htm
de - deutsch.htm

leider funktioniert das nicht richtig...
hier das script und danke für eure tips
(oder hat jemand ein fertiges script was funktioniert ??)

mike

<script language="JavaScript">
<!--

if (navigator.browserLanguage == "de" navigator.language == "de")
window.location.href="deutsch/index_de.htm"

else if (navigator.browserLanguage == "en" navigator.language == "en")
window.location.href="english/index.html"

else if (navigator.browserLanguage == "it" navigator.language == "it")
window.location.href="italiano/index_it.htm"

else if (navigator.browserLanguage == "fr" navigator.language == "fr")
window.location.href="francais/index_fr.htm"

//-->
</script>

  1. Hallo mike,

    else if (navigator.browserLanguage == "en" navigator.language

    .browserLanguage wird nicht von allen Browsern unterstützt.
    Muß auch nicht, da es ja eine "Eigenschaft" des Anwendungs-Objektes (navigator) ist und die kann jeder Hersteller erweitern wie er will.

    Du solltest wenn möglich die Sache dem Server überlassen. Beim Apache kann dies via .htaccess geschehen.

    Michael Schröpl hat hierzu einen guten Artikel geschrieben:
    http://www.teamone.de/selfaktuell/artikel/schroepl04.htm

    Viel Spaß
    CirTap

  2. Hi,

    ich probiere mit einem script herum, das automatisch ausliest, welche browser language der user nutzt.
    anschließend soll er auf die betreffende seite umgeleitet werden

    User-Agent: Mozilla/4.5 [en] (Win98; I)
    Accept-Language: de,de-DE,de-AT,de-CH

    A ja nje ponimaju po-nemjetski.

    leider funktioniert das nicht richtig...

    Das _kann_ gar nicht funktionieren, denn die einzige auch nur im Ansatz verläßliche Informationsquelle über die derzeit bevorzugte Sprache des Benutzers ist - der Benutzer. Frage ihn also. Am einfachsten geht das mit Links, um nicht zu sagen: damit geht es mit links.

    Cheatah

    1. Hallo Cheatah!

      User-Agent: Mozilla/4.5 [en] (Win98; I)
      Accept-Language: de,de-DE,de-AT,de-CH

      A ja nje ponimaju po-nemjetski.

      Dann musst Du Deinen Browser richtig konfigurieren, in dem Fall also [ru] fuer die bevorzugte Sprache einstellen.

      Das _kann_ gar nicht funktionieren, denn die einzige auch nur im Ansatz verläßliche Informationsquelle über die derzeit bevorzugte Sprache des Benutzers ist - der Benutzer.

      Und der sagt es seinem Browser, und der sagt es dem Webserver (ueber den Accept-Language Header). Mit JS kann man das nur leider nicht abfragen, da navigator.language lediglich die Sprache des UIs des Browsers zurueckgibt.

      Was damit leider auch nicht moeglich ist (meines Wissens), ist die *Originalsprache* zu verlangen. Eine Uebersetzung verliert ja fast zwangslaeufig an Qualitaet. Also moechte ich Texte eines englischen Autors lieber in Englisch lesen, Texte eines deutschen lieber in Deutsch. (Und bei einer anderen Originalsprache muss ich hoffen, dass wenigstens eine englische Uebersetzung vorliegt. *g*) Vielleicht denkt sich ja dafuer mal noch jemand was aus.

      So lange

      1. Was damit leider auch nicht moeglich ist (meines
        Wissens), ist die *Originalsprache* zu verlangen.
        Eine Uebersetzung verliert ja fast zwangslaeufig
        an Qualitaet. Also moechte ich Texte eines englischen
        Autors lieber in Englisch lesen, Texte eines
        deutschen lieber in Deutsch. (Und bei einer anderen
        Originalsprache muss ich hoffen, dass wenigstens
        eine englische Uebersetzung vorliegt. *g*)

        http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.4
        sagt:

        If no language-range in the field matches the tag, the
        language quality factor assigned is 0.
        If no Accept-Language header is present in the request,
        the server SHOULD assume that all languages are equally
        acceptable.
        If an Accept-Language header is present, then all
        languages which are assigned a quality factor greater
        than 0 are acceptable.

        Das bedeutet vermutlich, daß Du durch die Angabe eines
        Accept-Headers dem Server *verbietest*, Dir eine Sprache
        *seiner* Wahl anzubieten, wenn er eine Sprache *Deiner*
        Wahl unterstützt.
        Würdest Du *keinen* Accept-Header senden, dann hätte
        der Server die Wahl ... würdest Du eine leere Liste von
        Sprachen senden, ebenfalls.

        Vielleicht denkt sich ja dafuer mal noch jemand was
        aus.

        HTTP/1.2 ??? ;-)

      2. Hi,

        Accept-Language: de,de-DE,de-AT,de-CH

        A ja nje ponimaju po-nemjetski.

        Dann musst Du Deinen Browser richtig konfigurieren, in dem Fall also [ru] fuer die bevorzugte Sprache einstellen.

        das tue ich nicht, weil dann derjenige, dessen Computer ich gerade benutze, sauer wird. Ich bin dankbar, daß er mir das Gerät zur Verfügung stellt, während meines/r Urlaubes/Schüleraustausches/Dienstreise/Auslandsstudiums/etc.

        Die Einstellungen des Systems sind _niemals_ eine verläßliche(!) Informationsquelle darüber, was der aktuelle Benutzer zum aktuellen Zeitpunkt bevorzugt.

        Cheatah

  3. hi!

    ich verwende immer englishsprachige programme, weil die leichter für mich zu verstehen, handeln sind, aber ne website möcht ich mir lieber in deutsch ansehen.
    eine verlässliche möglichkeit den user auf "seine sprache" weiterzuschalten, gibt es nicht wirklich. wahrscheinlich is es am besten zwei links zur auswahl zu stellen - deutsch und english
    schönen gruss
    this -> *;_;* walker