it-swarm.com.de

Wie erhalte ich die aktuelle Gebietsschemaeinstellung des Browsers mit Javascript?

Weiß jemand, wie Sie die Browserkultur von Firefox und Google Chrome mithilfe von Javascript erhalten? Hinweis: Dies ist eine asp.net 3.5-Webanwendung.

Die Anforderung besteht darin, die Anzeigekultur der Anwendung anhand der Browserkultur festzulegen. Ich habe nur sehr wenige Informationen für die anderen Browser gefunden, aber sie scheinen nicht zu funktionieren.

Ich kann es in IE mit dem folgenden Codeausschnitt erhalten:

var browserCulture = this.clientInformation.browserLanguage;

Jede Info wäre toll!

35
The Sheek Geek

Die folgenden Eigenschaften sind im navigator-Objekt vorhanden (das in IE auch als clientInformation bezeichnet werden kann, aber es gibt keinen Grund, diesen Namen zu verwenden):

  • language (Nicht-IE, Browser-Installationssprache)
  • browserLanguage (IE, Browser-Installationssprache)
  • userLanguage (IE, OS-weite Spracheinstellung auf Benutzerebene)
  • systemLanguage (IE, OS-Installationssprache)

Aber! Sie sollten niemals eine dieser Eigenschaften verwenden! Sie werden in vielen Fällen die falsche Sprache sein.

Keines davon spiegelt die Spracheinstellungen wider, die der Benutzer tatsächlich in der Benutzeroberfläche der bevorzugten Sprachen des Browsers konfigurieren kann, und sie können nur schwer geändert werden. Sie verursachen große Frustration, wenn Sie einen dieser Werte verwenden, ohne dass Sie auf einfache Weise die Sprache wechseln müssen.

Die richtige Stelle, an der Sie entscheiden sollten, welche Sprache standardmäßig verwendet wird, wie von der normalen Browser-Benutzeroberfläche konfiguriert, ist der Accept-Language - Header, der in der HTTP-Anforderung an Ihren Server übergeben wird. Hierbei handelt es sich um eine Rangliste der bevorzugten Sprachen, aus der Sie auswählen können. Wenn dies verwendet wird, verwendet ASP.NET eine automatische Client-Kultur.

Leider ist diese Eigenschaft nicht in JavaScript verfügbar!

Normalerweise verwenden Sie auf Ihrer Serverseite den Accept-Language-Header und wählen eine geeignete Sprache aus. In ASP.NET können Sie eine vorsortierte Liste von HttpRequest.UserLanguages ​​ abrufen und die erste auswählen, die Ihnen gefällt.

Sie spucken diesen Sprachnamen dann in ein <script>-Element aus, um die Sprachinformationen an die Clientseite zu übergeben.

68
bobince

Versuche dies:

var l_lang;
  if (navigator.userLanguage) // Explorer
    l_lang = navigator.userLanguage;
  else if (navigator.language) // FF
    l_lang = navigator.language;
  else
    l_lang = "en";

Quelle: http://forums.digitalpoint.com/showthread.php?t=631706

12
Sologoub

navigator.languages ist ein Array und enthält alle ausgewählten Sprachen in der Reihenfolge. Und funktioniert nur für Chrome und Firefox.

Es ist nicht dasselbe wie navigator.language und damit meine ich, dass navigator.language nicht unbedingt mit navigator.languages[0] übereinstimmt.

Nur um es klar auszudrücken.

6
Mats

Um ein Gebietsschema in IE zu erhalten, müssen Sie den serverseitigen Code schreiben. Ich habe es mit Servlet versucht und bekam die akzeptierte Sprache des IE. Es zeigt die Sprachen, die vom Benutzer ausgewählt werden. Rufen Sie das Servlet auf Ihrer Clientseite an und rufen Sie die Ländereinstellung ab.

String name=request.getHeader("accept-language");
        AcceptClass ac=new AcceptClass();
        ac.setAccLang(name);
        Gson gs=new Gson();
          String json = gs.toJson(ac);
          response.setContentType("application/json");
          response.getWriter().write(json);
0