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

时间:2016-07-22 17:07:59

标签: javascript jquery 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();
      });
    });

1 个答案:

答案 0 :(得分:2)

i18next支持区域语言......这就是本地化的内容。

如果您只想支持没有区域设置load: '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翻译。