Actron: Browser-Sprache ermitteln: navigator.language.indexOf

Hallo!

Unter http://de.selfhtml.org/javascript/objekte/navigator.htm#language@title=navigator.language und in zahlreichen anderen Beispielen im Netz wird die Browser-Sprache mit Abfragen wie

if (navigator.language.indexOf("en") > -1)

ermittelt.

Dabei frage ich mich stets, warum nicht

if (navigator.language == "en")

verwendet wird.

Gibt es da einen Grund für, der mir grad nicht in den Sinn kommt?

tnx & cya
Bernd

  1. Hi,

    man kann auch mehrere Sprachen angeben.
    Außerdem gibts z.B. "en" und "en-us", für Englisch und Amerikanisches-Englisch.

    ~dave

    1. Hallo!

      Und wie ist die eine Variante dann besser als die andere? Kannst du da ein Codebeispiel zu geben? Mehrere Sprachen kann ich doch auch mit der zweiten Variante verarbeiten.

      Bernd

      1. Hi,

        man kann auch mehrere Sprachen angeben.
        Außerdem gibts z.B. "en" und "en-us", für Englisch und Amerikanisches-Englisch.

        Und wie ist die eine Variante dann besser als die andere?

        Ganz einfach - die eine „findet“ "en" in "en-us", die andere nicht.

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
        1. Ganz einfach - die eine „findet“ "en" in "en-us", die andere nicht.

          Na klar, unter dem Gesichtspunkt macht indexOf nat. Sinn.

          Dann ist der Groschen wohl gefallen. Tnx.

          Bernd

          1. @@Actron:

            nuqneH

            Na klar, unter dem Gesichtspunkt macht indexOf nat. Sinn.

            Nein, navigator.language macht wohl keinen Sinn.

            Dann ist der Groschen wohl gefallen. Tnx.

            Der hätte an anderer Stelle fallen sollen.

            Qapla'

            --
            Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
            (Mark Twain)
    2. man kann auch mehrere Sprachen angeben.

      Das ist falsch, denn navigator.language bzw. navigator.browserLanguage gibt nicht die Sprachen wieder, welche der Browser akzeptiert und der Benutzer versteht, sondern allein die Sprache der Browser-UI (bzw. des Betriebssystems). Das ist natürlich nur eine.

      Da es durchaus üblich ist, dass etwa Deutschsprachige einen Browser mit englischsprachiger UI verwenden, eignen sich die Eigenschaften nicht, um Rückschlüsse auf die vom Nutzer verstandenen Sprachen zu machen. Im IE gibt es navigator.userLanguage, was schon näher dran wäre, das ist eine in der Windows-Systemsteuerung angegebene Sprache.

      Am zuverlässigsten ist aber der HTTP-Header Accept-Language, welcher sich via JavaScript aber nicht so einfach auslesen lässt - jedoch sehr einfach serverseitig.

      Außerdem gibts z.B. "en" und "en-us", für Englisch und Amerikanisches-Englisch.

      Das ist richtig.

      Mathias