express.js - 如何在使用快速会话时使用i18next正确更改语言?

时间:2018-02-01 18:45:21

标签: express-session i18next

我首选不在网址中使用与语言相关的参数,因此我决定使用快速会话更改当前语言。

通过阅读文档(可能存在误解)标准配置快速会话以获得概念证明后,我有一个端点,如:

app.get('myRoute', function(req, res) {
  req.i18n.changeLanguage('en'); // will not load that!!! assert it was preloaded
});

当您通过评论阅读时(来自文档)“将无法加载”
然后我想出了适合我的代码:

router.get('/chz', function(req, res){
 if(req.session){
  req.session.lng = 'zh-TW';
 }
 res.redirect('back');
});

此代码是否存在任何潜在问题(优化软件或安全性等),我必须以某种方式使用i18n.changeLanguage()来改变使用快速会话时的语言?如果没有,那么i18n.changeLanguage()的用法是什么?

1 个答案:

答案 0 :(得分:1)

只需使用i18next-express-middleware附带的语言检测器:https://github.com/i18next/i18next-express-middleware#detector-options

如果在订单选项中启用了,那么它已经在每个请求上从req.session.lng抓取了lng:

{
  // order and from where user language should be detected
  order: [/*'path'*/, 'session',  'querystring', 'cookie', 'header'],
  // ...