如何在节点服务器上为不同的用户创建单独的 i18next 实例?
how to create individual i18next instances for different users on node server?
我是 node.js 的新手。我在我的节点应用程序中使用 i18next
进行国际化。这是代码
utils.js
i18n.use(Backend).init({
debug: true,
load: ['ar','en'],
fallbackLng: 'en',
backend: {
loadPath: path.join(__dirname,'/{{lng}}/{{ns}}.json')
},
getAsync:false
}, (err, t) => {
return t;
});
exports.i18n=i18n;
对于每个请求,我都会通过 cookie 检查用户语言,如果不匹配,我会尝试强制翻译成该特定语言。
下面是片段
app.all('*',function(req,res,next){
var lng = utils.getLanguage;
lng(req,res,function(data){
var i18n = utils.i18n;
i18n(function(i18n){
var nodeLanguage = i18n.options.lng||i18n.options.fallbackLng;
if(nodeLanguage == data){
next();
}
else{
console.log("not same");
i18n.options.lng = data;
i18n.init(i18n.options,function(){
next();
});
}
});
});
});
这段代码对我来说工作正常,因为我是单身 user.But 如果在不同的浏览器中点击相同的 url,它会以用户选择的语言显示,但 i18next
正在初始化为最新用户选择的语言。例如:-
case1 : 在 browser-1 中,选择 en,然后 i18next.init
方法将语言设置为 zh.
case2 : 在 browser-2 中,选择 fr,然后 i18next.init
方法设置为 fr.
如果我在浏览器 1 中点击相同的 URL,它会再次调用 i18next.init 方法。
如何为个人用户创建个人 i18next 实例,以避免继续调用 init 方法?请帮助我。
谢谢。
将中间件用于 express:https://github.com/i18next/i18next-express-middleware 您需要的一切都在那里,包括。语言检测。
我是 node.js 的新手。我在我的节点应用程序中使用 i18next
进行国际化。这是代码
utils.js
i18n.use(Backend).init({
debug: true,
load: ['ar','en'],
fallbackLng: 'en',
backend: {
loadPath: path.join(__dirname,'/{{lng}}/{{ns}}.json')
},
getAsync:false
}, (err, t) => {
return t;
});
exports.i18n=i18n;
对于每个请求,我都会通过 cookie 检查用户语言,如果不匹配,我会尝试强制翻译成该特定语言。
下面是片段
app.all('*',function(req,res,next){
var lng = utils.getLanguage;
lng(req,res,function(data){
var i18n = utils.i18n;
i18n(function(i18n){
var nodeLanguage = i18n.options.lng||i18n.options.fallbackLng;
if(nodeLanguage == data){
next();
}
else{
console.log("not same");
i18n.options.lng = data;
i18n.init(i18n.options,function(){
next();
});
}
});
});
});
这段代码对我来说工作正常,因为我是单身 user.But 如果在不同的浏览器中点击相同的 url,它会以用户选择的语言显示,但 i18next
正在初始化为最新用户选择的语言。例如:-
case1 : 在 browser-1 中,选择 en,然后 i18next.init
方法将语言设置为 zh.
case2 : 在 browser-2 中,选择 fr,然后 i18next.init
方法设置为 fr.
如果我在浏览器 1 中点击相同的 URL,它会再次调用 i18next.init 方法。 如何为个人用户创建个人 i18next 实例,以避免继续调用 init 方法?请帮助我。
谢谢。
将中间件用于 express:https://github.com/i18next/i18next-express-middleware 您需要的一切都在那里,包括。语言检测。