javascript – 检测浏览器语言并将其与i18next一起使用时遇到问题

我正在开发一个webapp.我正在使用i18next,除非我在选项上指定“lng”,否则它不会检测语言.

如果我使用“navigator.language || navigator.userLanguage”,Chrome就可以了.它返回类似“en”的内容.但是Firefox例如返回“en-GB”.我不使用区域翻译,i18next不会将“en-GB”重定向到“en”.所以,系统不起作用.

这是我的代码:

$(document).ready(function(){
      i18next.use(i18nextXHRBackend);
      i18next.init({
          'debug': true,
          'lng': navigator.language || navigator.userLanguage,
          'fallbackLng': 'en',
          'load': 'currentOnly',
          'backend': {
            loadPath: 'locales/{{lng}}/{{ns}}.json'
          }
      }, function() {
          jqueryI18next.init(i18next, $);
          $('body').localize();
      });
    });

最佳答案 i18next支持区域语言……这就是本地化的意义所在.

如果您只想支持没有区域设置加载的语言:’languageOnly’:

$(document).ready(function(){
  i18next.use(i18nextXHRBackend);
  i18next.init({
      'debug': true,
      'load': 'languageOnly',
      'lng': navigator.language || navigator.userLanguage,
      'fallbackLng': 'en',
      'load': 'currentOnly',
      'backend': {
        loadPath: 'locales/{{lng}}/{{ns}}.json'
      }
  }, function() {
      jqueryI18next.init(i18next, $);
      $('body').localize();
  });
});

这将避免接受en-GB进行查找并仅使用en.如果没有设置,i18next仍将输出相同的结果,但也尝试加载en-GB翻译.

点赞