express.js - 使用 express-session 时如何使用 i18next 正确更改语言?
express.js - How to correctly change language with i18next when using express-session?
我不想在 url 中包含与语言相关的参数,所以我决定使用 express-session 更改当前语言。
通过阅读文档(可能有误解)对快速会话进行标准配置以进行概念验证后,我有一个端点,如:
app.get('myRoute', function(req, res) {
req.i18n.changeLanguage('en'); // will not load that!!! assert it was preloaded
});
正如您在评论中所读到的(来自文档)"will not load"
然后我想出了这段对我有用的代码:
router.get('/chz', function(req, res){
if(req.session){
req.session.lng = 'zh-TW';
}
res.redirect('back');
});
此代码是否存在任何潜在问题(软优化或安全性等),我必须以某种方式使用 i18n.changeLanguage() 来更改使用 express-session 时的语言?如果不是,那么i18n.changeLanguage()的用法是什么?
只需使用 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'],
// ...
我不想在 url 中包含与语言相关的参数,所以我决定使用 express-session 更改当前语言。
通过阅读文档(可能有误解)对快速会话进行标准配置以进行概念验证后,我有一个端点,如:
app.get('myRoute', function(req, res) {
req.i18n.changeLanguage('en'); // will not load that!!! assert it was preloaded
});
正如您在评论中所读到的(来自文档)"will not load"
然后我想出了这段对我有用的代码:
router.get('/chz', function(req, res){
if(req.session){
req.session.lng = 'zh-TW';
}
res.redirect('back');
});
此代码是否存在任何潜在问题(软优化或安全性等),我必须以某种方式使用 i18n.changeLanguage() 来更改使用 express-session 时的语言?如果不是,那么i18n.changeLanguage()的用法是什么?
只需使用 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'],
// ...