2012-06-02 3 views
13

Express의 동일한 레이아웃에서 동일한 콘텐츠의 여러 버전/언어를 구현하는 가장 좋은 방법이 무엇일까 궁금합니다.다국어 익스프레스 앱

그냥해야하나요?

app.get("/", function(req, res) { 
    res.render(language + "/index"); 
}); 

아니면 더 좋은 방법이 있습니까?

답변

21

하나의 템플릿 만 사용하는 것이 좋습니다. 언어 당 하나의 템플릿을 사용하는 것처럼 많은 콘텐츠 (및 템플릿에 넣을 소량의 "논리" 너무). 많은 응용 프로그램은 gettext라는 도구를 사용하여 국제화 작업을 수행합니다. 노드에 대한 node.js 라이브러리가 있습니다. https://github.com/DanielBaulig/node-gettext

또는 i18n-node이 있습니다. 익스프레스 j와 좀 더 통합 된 것처럼 보입니다.

+3

감사 :

  • 는 단수와 복수 형태를 매개 변수에 대한
  • 지원을 지원합니다! i18n 노드를 가져 가겠습니다. :) – buschtoens

  • 2

    나는 json 객체를 en.js, fr.js와 같은 lang 폴더에 정의 할 수 있다고 생각하고이 json 파일에는 사용자의 언어 설정에 따라 템플릿에 대한 렌더링보다 키 값 쌍이 들어 있으며 lang 설정은 데이터베이스에 포함될 수 있습니다.

    그리고 우리는 모든 템플릿을 호출하기 위해 res.locals에 fr.js 또는 다른 것을 저장할 수 있습니다.

    적합합니까?

    5

    i18n-node은 사용해야하는 가장 단순하고 훌륭한 모듈입니다. Javascript 코드에서 직접 사용할 수도 있고 Jade/Handlebar 템플릿과 Express j를 함께 사용할 수도 있습니다.

    왜 i18n을 사용해야합니까?

    • 설정에 따라 헤더, 쿠키 또는 쿼리 매개 변수를 사용하여 브라우저에서 로캘을 자동으로 검색합니다.
    • 예와 함께 제공됩니다.
    • 기본적으로 안에 en.json가 자동으로 생성됩니다. 이것은 새로운 번역을 만들기 시작하는 마스터 파일의 역할을합니다. __('Hello %s', 'Marcus') 반환 Hallo Marcus