I follow the demo code provided by i18next
const i18next = require("i18next");
const i18m = require("koa-i18next-middleware");
// add custom detector.
i18m.LanguageDetector.addDetector({
name: "mySessionDetector",
lookup(ctx, options) {
let found;
if (options.lookupSession && ctx && ctx.sessions) {
found = ctx.sessions[options.lookupMySession];
}
return found;
},
cacheUserLanguage(ctx, lng, options = {}) {
if (options.lookupMySession && ctx && ctx.session) {
ctx.session[options.lookupMySession] = lng;
}
}
});
i18next.use(i18m.LanguageDetector).init({
fallbackLng: "en",
preload: ["en", "es"],
resources: {
en: {
translation: {
"key": "hello world"
}
},
es: {
translation: {
"key": "es hello world es"
}
}
},
detection: {
order: ["querystring", "path", /*"cookie", "header",*/ "session", "mySessionDetector"],
lookupQuerystring: "lng",
lookupParam: "lng", // for route like: "path1/:lng/result"
lookupFromPathIndex: 0,
// currently using ctx.cookies
lookupCookie: "i18next",
// cookieExpirationDate: new Date(), // default: +1 year
// cookieDomain: "", // default: current domain.
// currently using ctx.session
lookupSession: "lng",
// other options
lookupMySession: "lang",
// cache user language
caches: ["cookie", "mySessionDetector"]
}
}, (err, t) => {
// initialized and ready to go!
const hw = i18next.t("key"); // hw = "hello world"
console.log(hw);
});
app.use(i18m.getHandler(i18next, {
locals: "locals",
ignoreRoutes: ["/no-lng-route"],
})
);
console prompt error
what to do with this!