无法读取属性&toResolveHierarchy'未定义的

时间:2017-11-12 15:09:13

标签: javascript i18next

我通过传递语言代码(en-UK)来调用i18next更改语言功能:

var changeLng = function (varLng) {  
  i18next.changeLanguage('en', (err, t) => {
    if (err) return console.log('something went wrong loading', err);
    t('applog'); // -> same as i18next.t
  });
};

我遇到了以下问题:

VM4081 i18next.js:1912 Uncaught TypeError: Cannot read property 'toResolveHierarchy' of undefined
    at setLng (VM4081 i18next.js:1912)
    at I18n.changeLanguage (VM4081 i18next.js:1927)
    at changeLng (VM4079 langUK.js:23)
    at HTMLImageElement.<anonymous> (VM4079 langUK.js:8)

我认为i18next试图执行该操作时出错:

_this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);

但我无法确定正确执行此操作所需的条件。 在此先感谢您的支持, 千斤顶

2 个答案:

答案 0 :(得分:0)

您是否正确初始化了i18next?这段代码适合我:

i18next.init({
  lng: 'en',
  debug: true,
  resources: {
    en: {
      translation: {
        "key": "hello world"
      }
    }
  }
}, function(err, t) {
  // initialized and ready to go!
  console.log("Ready to go!");
});

var changeLng = function(varLng) {
  i18next.changeLanguage('en', (err, t) => {
    if (err) return console.log('something went wrong loading', err);
    t('applog'); // -> same as i18next.t
  });
};

changeLng()
<script src="https://unpkg.com/i18next/i18next.min.js"></script>

修改: took this from the documentation

答案 1 :(得分:0)

这可能是由于i18next的错误导入引起的,或者尚未初始化,例如“从'i18next'导入i18n”。 首先运行init函数,然后可以运行changeLanguage。