我有一个使用i18n和Angular CLI的Angular应用程序。 CLI为每种语言创建应用程序(和不同的文件夹)。我想根据用户会话呈现视图(他/她的语言偏好在他/她的会话中)。
这是我文件夹的结构
myapp
--dist
----en
----fr
所以我想将视图文件夹设置为:
app.set('views', join(__dirname, 'dist'));
然后将用户重定向到其语言文件夹。这是一个正确的策略,如果是,我如何将用户重定向到其文件夹(仅限视图)?
答案 0 :(得分:1)
如果我们按如下方式配置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`, {});
});