2017-10-25 10 views
0

"express", "i18n", "express-session", "cookie-parse"를 사용하고 있다고 생각하면 adicionally 필요에 따라 "npm locale"또는 유사한 것을 사용할 수 있습니다. 나는이 같은 경로가 있다고 가정하자 :노드 익스프레스 i18n 유지 보수 가능한 링크

나는 사용자가 그들에게 보여 "ES"자신의 쿠키 또는 헤더에 ... 같은 언어가있는 경우에 대한 페이지에 링크 방법, 유지 보수 및 자동 링크를 설정하는 방법
"/", "/es/" , "/de/" 
"/terms", "/es/terms", "/de/terms" 
"/privacy", "/es/privacy", "/de/privacy" 
... 

"es"버전의 페이지 또한 링크를 업데이트해야 할 경우에 대비하여 URL을 사용하여 변수를 설정하는 것을 고려하면 한 번만 변경됩니다. 내가 생각할

한 가지였다 : "es.json"와 같은 국제화 파일에

세트

{ 
    "url_home" : "/es/" , 
    "url_terms" : "/es/terms", 
    ... 
} 

다음 다른 파일은 "de.json"

{ 
    "url_home" : "/de/" , 
    "url_terms" : "/de/terms", 
    ... 
} 
처럼 될 것입니다

나는 이것이 옳은 길인가? 또는 다른 방법으로 권장 사항을 따라야합니까?

답변

0

나는 지금 몇 가지 테스트와 함께 말할 것이고, 최선의 방법은 (그리고 나는 i18n을 사용하지 말 것을 제안한다) URL을위한 미들웨어를 만들 것이다.

가있는 url.json 파일 생성 : :이 같은이를 만들 수 있습니다

{ 
    "en": { 
     "home": "/", 
     "terms": "/terms" 
    "es": { 
     "home": "/es", 
     "terms": "/es/terms" 
} 

그때 내가 (쿠키 언어에 따라 내 방법 사용을 경로 용어 (내가 해요 때이다 도트 템플릿) 로케일를 사용하여 내 쿠키이 경우 너무 :

: 단순히 내 템플릿에서 다음

const urls = require('urls.json'); 

    ... 

    app.get('/:lang/terms', function(req, res) { 

    if (req.params.lang === 'es') { 

     res.render('terms',{ 

     // get urls for locale cookie language 
     urls: urls[req.locale], 

     }); 
    } 
    ... 
    //more languages 
}); 

<li><a href="{%= it.urls.terms%}">{%=it.__n('help')%}</a></li>