2017-12-27 237 views
0

我有一個使用i18n和Angular CLI的Angular應用程序。 CLI爲每種語言創建一個應用程序(和一個不同的文件夾)。我想根據用戶會話呈現視圖(他/她的語言偏好在他/她的會話中)。ExpressJS - 根據用戶使用不同的路徑視圖

這裏是我的文件夾

myapp 
--dist 
----en 
----fr 

,所以我想在視圖文件夾設置爲結構:

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

,然後將用戶重定向到其語言文件夾。這是一個正確的策略,如果是,我如何將用戶重定向到它的文件夾(僅適用於視圖)?

回答

1

如果我們已經配置快遞如下:

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`, {}); 
}); 
+0

角編譯文件,並創建爲每種語言的文件夾。這就是Angular I18n的工作原理(https://angular.io/guide/i18n)!我不是在談論Express的i18n ... – ncohen

+0

我的問題是如何根據用戶會話設置視圖路徑! – ncohen

+0

呃。對不起。據我所知,我們使用類似更新的答案。但那不包括課程。如果我找到解決方案,我會編輯答案。 @ncohen – gokcand