我和这个问题有类似的问题,但我做了他们所写的所有内容,但仍有错误i18next Displayed key instead of value
我在/ locales / en /
中有translation.json文件 {
"Ustawienia" : "Settings",
"O aplikacji" : "About Application"
}
在application.js
中function launchApp(options) {
var javascriptFiles = [
`${options.BASEURL}js/i18next.min.js`,
`${options.BASEURL}js/i18next-xhr-backend.min.js`,
`${options.BASEURL}templates/MainTemplate.js`,
];
evaluateScripts(javascriptFiles, function(success) {
if(success) {
i18next.use(i18nextXHRBackend);
i18next.init({
lng: userLanguage,
debug: true,
fallbackLng: false,
keySeparator: false,
nsSeparator: false,
useLocalStorage: true ,
useDataAttrOptions:true,
//resGetPath : '/locales/{{lng}}/{{ns}}.json',
backend: {
loadPath: options.BASEURL + '/locales/{{lng}}/{{ns}}.json'
},
}, (err, t) => {
// initialized and ready to go!
});
var doc = new MainTemplate().getTemplate();
doc.addEventListener("select", handleMainNavigationClick);
mainDocument = doc;
navigationDocument.pushDocument(doc);
setTimeout(dismissModalView, 2000);
}
当我想在模板中使用i18next.t时,例如
<title>${i18next.t("Ustawienia")}</title>
它显示键(Ustawienia)而不是值(设置)你有什么提示,我缺少什么?
答案 0 :(得分:0)
我相信您的问题可能是您初始化mainDocument
的地方。不使用来自i18next.init()
的回调,但 是您确定 初始化的地方。你的代码看起来应该是这样的
if(success) {
i18next.use(i18nextXHRBackend);
i18next.init({
lng: userLanguage,
debug: true,
fallbackLng: false,
keySeparator: false,
nsSeparator: false,
useLocalStorage: true ,
useDataAttrOptions:true,
backend: {
loadPath: options.BASEURL + '/locales/{{lng}}/{{ns}}.json'
},
}, (err, t) => {
// initialized and ready to go!
// this is where initialisation-dependent code should go
// additionally check if there was an error initialising i18next
if (err === undefined) {
var doc = new MainTemplate().getTemplate();
doc.addEventListener("select", handleMainNavigationClick);
mainDocument = doc;
navigationDocument.pushDocument(doc);
setTimeout(dismissModalView, 2000);
} else {
// there was an error, handle it
}
});
}