2015-12-29 1 views
0

Je suis nouveau sur node.js. J'utilise i18next pour l'internationalisation dans mon application de noeud. voici le code utils.jscomment créer des instances i18next individuelles pour différents utilisateurs sur le serveur de noeud?

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; 

Pour chaque demande Je vérifie la langue de l'utilisateur via les cookies et si ne correspond pas à je suis en train de forcer les traductions à cette langue.

est Ci-dessous l'extrait

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(); 
       }); 
      } 
     }); 
    }); 
}); 

Ce code fonctionne bien pour moi que je suis user.But unique Si frappé la même URL dans différents navigateurs, il est affiché dans la langue sélectionnée par l'utilisateur, mais i18next est à l'initialisation dernière langue sélectionnée par l'utilisateur. Par exemple: -

affaire1: Dans un navigateur 1, sélectionné en , puis méthode i18next.init définir la langue en.

cas2: Dans un navigateur 2, choisi fr, puis i18next.init procédé est la mise à fr.

Si j'appuie sur la même URL dans browser-1, il appelle de nouveau la méthode i18next.init. Comment créer des instances i18next individuelles à des utilisateurs individuels afin d'éviter que l'appel de la méthode init ne se poursuive? Aidez-moi, s'il vous plaît.

Merci.

Répondre