首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在节点服务器上为不同用户创建单独的i18next实例?

如何在节点服务器上为不同用户创建单独的i18next实例?
EN

Stack Overflow用户
提问于 2015-12-29 13:36:14
回答 1查看 807关注 0票数 0

我是node.js的新手。我在我的节点应用程序中使用i18next进行国际化。这是代码utils.js

代码语言:javascript
复制
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检查用户语言,如果不匹配的话,我会尝试将翻译强制转换到特定的语言。

下面是片段

代码语言:javascript
复制
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方法将语言设置为en

case2:在browser-2中,选择fr,然后i18next.init方法设置为fr

如果在browser-1中单击相同的URL,则再次调用i18next.init方法。如何为单个用户创建单独的i18next实例,以避免调用init方法继续进行?请帮帮我。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-11 21:19:45

使用中间件进行速递:https://github.com/i18next/i18next-express-middleware是您所需要的全部,包括。语言检测。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34512226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档