2017-12-27 4 views
0

i18n 및 각도 CLI를 사용하는 각도 응용 프로그램이 있습니다. CLI는 각 언어에 대한 응용 프로그램 (및 다른 폴더)을 작성합니다. 사용자 세션에 따라 뷰를 렌더링하고 싶습니다 (언어 환경 설정은 세션에 있습니다).ExpressJS - 사용자에 따라보기에 다른 경로 사용

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

다음의 언어 폴더에 사용자를 리디렉션 : 여기

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

이 그래서가보기 폴더를 설정하고 싶어 내 폴더의 구조입니다. 올바른 전략인가, 그렇다면 어떻게 사용자를 폴더로 리디렉션 할 수 있습니까 (보기 전용)?

답변

1
다음과 같이 우리가 Express를 구성한 경우

: 당신은 세션에서 언어를 선호됩니다 미들웨어를 작성해야

/views/ 
/views/en/welcome.html 
/views/fr/welcome.html 
/views/en/news/article1.html 
/views/fr/news/article1.html 

, 세트 :

app.set('views', path.join(__dirname,'/views')); 

을 그리고 당신은 다음과 같은 파일 구조를 가지고있는 경우 어떤 값으로 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)! 익스프레스 i18n에 대해 얘기하지 않고있어 ... – ncohen

+0

제 질문은 어떻게 사용자 세션에 따라보기 경로를 설정합니까입니다! – ncohen

+0

어. 그 죄송합니다. 지금까지 내가 경험 한대로 업데이트 된 답변과 같은 것을 사용합니다. 하지만 세션은 물론 포함되지 않습니다. 해결책을 찾으면 답을 편집 할 것입니다. @ncohen – gokcand

관련 문제