我通过传递语言代码(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);
但我看不出正确执行此操作需要什么。 预先感谢您的支持, 杰克
您是否正确初始化了
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>
编辑:从文档中获取此内容
可能是由于
i18next
的导入错误或者尚未初始化造成的,例如“import i18n from 'i18next'”。
首先运行init函数,然后你可以运行changeLanguage。
您可以简单地导入 ./i18n.js 并使用导出的 i18next 实例: 从 './i18n' 导入 i18next 像这样导入并使用 i18next 更改语言和 .on 函数。