Der richtige Weg ist, sich den an den Server gesendeten HTTP Accept-Language- Header anzusehen . Diese enthält die geordnete, gewichtete Liste der Sprachen, für die der Benutzer seinen Browser konfiguriert hat.
Leider ist dieser Header nicht zum Lesen in JavaScript verfügbar. Sie erhalten navigator.language
lediglich Informationen darüber, welche lokalisierte Version des Webbrowsers installiert wurde. Dies ist nicht unbedingt dasselbe wie die bevorzugte (n) Sprache (n) des Benutzers. Auf IE erhalten Sie stattdessen systemLanguage
(Betriebssystem installierte Sprache), browserLanguage
(wie language
) unduserLanguage
(vom Benutzer konfigurierte Betriebssystemregion), die alle ähnlich wenig hilfreich sind.
Wenn ich mich zwischen diesen Eigenschaften entscheiden müsste, würde ich zuerst schnüffeln userLanguage
, auf language
und erst danach zurückgreifen (wenn diese nicht mit einer verfügbaren Sprache übereinstimmen) browserLanguage
und schließlich schauen systemLanguage
.
Wenn Sie ein serverseitiges Skript an einer anderen Stelle im Netz platzieren können, das einfach den Accept-Language-Header liest und ihn als JavaScript-Datei mit dem Header-Wert in der Zeichenfolge wieder ausspuckt, z.
var acceptLanguage= 'en-gb,en;q=0.7,de;q=0.3';
Dann können Sie ein <script src>, das auf diesen externen Dienst verweist, in den HTML-Code aufnehmen und JavaScript verwenden, um den Sprachheader zu analysieren. Ich kenne jedoch keinen vorhandenen Bibliothekscode, da dies fast immer auf der Serverseite erfolgt.
Was auch immer Sie am Ende tun, Sie müssen auf jeden Fall einen Benutzer überschreiben, da dies für manche Menschen immer falsch ist. Oft ist es am einfachsten, die Spracheinstellung in die URL einzufügen (z. B. http: //www.example.com/en/site vs http: //www.example.com/de/site) und den Benutzer klicken zu lassen Verbindungen zwischen den beiden. Manchmal möchten Sie eine einzige URL für beide Sprachversionen. In diesem Fall müssen Sie die Einstellung in Cookies speichern. Dies kann jedoch Benutzeragenten verwirren, die Cookies und Suchmaschinen nicht unterstützen.