2016-04-26 13 views
1

Ich habe eine französische und eine englische Version meiner Website:
* example.com/ist meine englische Version.
* example.com/fr/ist meine französische Version.Ändern der Websiteversion basierend auf Spracheinstellungen

So haben sie die Möglichkeit, die Website-Version zu ändern, indem sie auf eine Flagge klicken, aber standardmäßig, wenn sie auf example.com ankommen, wird es in Englisch sein.

Ich mag würde sie die Version entsprechend ihrer Sprache den Vorzug geben, ermitteln i bevorzugte Sprache mit:

var language = window.navigator.userLanguage || window.navigator.language; 

Aber dann, welcher Code verwende ich so, dass, wenn sie auf der Webseite kommen, wird es geben die Version entsprechend der Benutzersprachenpräferenz?

Und wenn die Website eine französische Version gibt, aber der Benutzer englische Version will, hat es immer noch die Möglichkeit, manuell zu ändern.

Antwort

1

Sie finden sie umleiten haben:

if (window.navigator.language === 'fr') { 
    window.location.href = "http://example.com/fr/"; 
} 

Bitte denken Sie daran, dass die window.navigator.language Eigenschaft implemented differently across browsers ist und Sie können Ihre bevorzugte Sprache in einem Array finden (wie window.navigator.languages) müssen.

Eine bessere Option wäre, den Header Accept-Language auf der HTTP-Anfrage auf der Serverseite zu überprüfen und entsprechend auf der Serverseite umzuleiten.

Es gibt auch JavaScript-based Internationalisierungsmethoden, aber sie beinhalten normalerweise nicht die Umleitung der Website.

+0

Aber das Problem hier ist, dass, wenn Javascript die französische Version der Website setzt, weil window.navigator.language == "fr" aber der Benutzer englische Version verwenden möchte und sagen, dass er es manuell auf Englisch setzt Dann wenn er Wird auf der Hauptseite oder irgendeiner Seite mit diesem Javascript-Code zurückkommen, wird es auf Französisch zurückgesetzt. – Jackymamouth

+0

In diesem Fall können Sie einen zusätzlichen JavaScript-Parameter wie 'wills_english = true' hinzufügen und das auch in der if-Anweisung überprüfen. Dies muss serverseitig erfolgen, also können Sie auch einen GET-Parameter verwenden und die gesamte Weiterleitung auf dem Server durchführen. Wenn Sie es unbedingt clientseitig machen wollen, machen Sie einen "localStorage" -Eintrag im Browser des Benutzers, wenn er seine Sprache auswählt. Beachten Sie, dass dies viel fragiler ist als eine serverseitige Lösung, da ein Benutzer JavaScript oder LocalStorage blockieren kann. – KWeiss

Verwandte Themen