ExpressJS-根据用户的不同,对视图使用不同的路径

ExpressJS-根据用户的不同,对视图使用不同的路径,express,Express,我有一个使用i18n和Angular CLI的Angular应用程序。CLI为每种语言创建一个应用程序(和一个不同的文件夹)。我希望根据用户会话呈现视图(他/她的语言首选项在他/她的会话中) 这是我的文件夹的结构 myapp --dist ----en ----fr 因此,我想将视图文件夹设置为: app.set('views', join(__dirname, 'dist')); 然后将用户重定向到其语言文件夹。这是正确的策略吗?如果是,我如何将用户重定向到其文件夹(仅用于视图)?如果我们

我有一个使用i18n和Angular CLI的Angular应用程序。CLI为每种语言创建一个应用程序(和一个不同的文件夹)。我希望根据用户会话呈现视图(他/她的语言首选项在他/她的会话中)

这是我的文件夹的结构

myapp
--dist
----en
----fr
因此,我想将视图文件夹设置为:

app.set('views', join(__dirname, 'dist'));

然后将用户重定向到其语言文件夹。这是正确的策略吗?如果是,我如何将用户重定向到其文件夹(仅用于视图)?

如果我们已将Express配置为以下内容:

app.set('views', path.join(__dirname,'/views'));
如果您具有以下文件结构:

/views/
/views/en/welcome.html
/views/fr/welcome.html
/views/en/news/article1.html
/views/fr/news/article1.html
您需要编写一个中间件,从会话中获取首选语言,将
req.body.preferredLang
设置为某个值,并在最后调用
next()

然后在app.js中使用该中间件,如下所示:

app.use(languageMiddleware);
router.get('/welcome', (req, res, next) => { 
    res.render(`${req.body.preferredLang}/welcome`, {}); 
});
最后,可以按如下方式渲染:

app.use(languageMiddleware);
router.get('/welcome', (req, res, next) => { 
    res.render(`${req.body.preferredLang}/welcome`, {}); 
});

Angular编译文件并为每种语言创建一个文件夹。这就是Angular i18n的工作原理()!我不是在说Express的i18n…我的问题是如何根据用户会话设置视图路径!嗯。对不起。据我所知,我们使用的是更新后的答案。但这当然不包括会议。如果我找到解决方案,我会编辑答案@ncohen@ncohen不过,你在会议中使用什么?passport.js?你不明白。。。我不希望该语言出现在URL中