Best way to determine user's locale within browser

前端 未结 10 1373
旧巷少年郎
旧巷少年郎 2020-11-22 09:54

I have a website (Flash) localized into a dozen of languages and I want to auto-define a default value depending on the user\'s browser settings in order to minimize the ste

10条回答
  •  暖寄归人
    2020-11-22 10:31

    Combining the multiple ways browsers are using to store the user's language, you get this function :

    const getNavigatorLanguage = () => {
      if (navigator.languages && navigator.languages.length) {
        return navigator.languages[0];
      } else {
        return navigator.userLanguage || navigator.language || navigator.browserLanguage || 'en';
      }
    }
    

    We first check the navigator.languages array for its first element.
    Then we get either navigator.userLanguage or navigator.language.
    If this fails we get navigator.browserLanguage.
    Finally, we set it to 'en' if everything else failed.


    And here's the sexy one-liner :

    const getNavigatorLanguage = () => (navigator.languages && navigator.languages.length) ? navigator.languages[0] : navigator.userLanguage || navigator.language || navigator.browserLanguage || 'en';
    

提交回复
热议问题