我首选不在网址中使用与语言相关的参数,因此我决定使用快速会话更改当前语言。
通过阅读文档(可能存在误解)标准配置快速会话以获得概念证明后,我有一个端点,如:
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()的用法是什么?
答案 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'],
// ...