[Node] i18n을 활용한 다국어 지원

13662 단어 NodeNode
위와 같이 같은 페이지더라도 다국어 서비스를 지원하기 위해서는 페이지를 두개 만들수도 있지만 모듈을 사용하면 편리하다. Node Js에서는 i18n모듈을 지원한다.

1. 먼저 필요한 모듈들을 설치한다.

npm install express
npm install cookie-parser
npm install i18n

2.  i18n.js 파일을 생성 후 다음과 같이 작성한다.

//모듈 불러오기
const i18n = require('i18n');

//옵션 설정
i18n.configure({
    //사용언어 설정 
    locales: ['ko', 'en'],

    //언어를 설정한 json 파일 생성위치 - 기본은 ./locales
    directory: __dirname + '/locales',

    //기본 사용언어 설정
    defaultLocale: 'ko',

    //사용언어를 저장할 cookie 이름
    cookie: 'lang'
});

module.exports = (req, res, next) => {
    i18n.init(req, res);
    return next();
};

3.  app.js 파일을 i18n.js 파일과 같은 위치에 생성 후 다음과 같이 작성한다.

//모듈 불러오기
const express = require('express');
const cookieParser = require('cookie-parser');
const i18n = require('./i18n');
const app = express();

//cookie 사용
app.use(cookieParser());

//i18n 초기화
app.use(i18n);

//라우팅 설정
app.get('/', (req, res) => {
    res.send(res.__('Hello'));
});
app.get('/en', (req, res) => {
    res.cookie('lang', 'en');
    res.redirect('back');
});
app.get('/ko', (req, res) => {
    res.cookie('lang', 'ko');
    res.redirect('back');
});

//서버 실행
app.listen(4000);

4. 서버를 실행시킨다.

node app

5. locales 폴더와 사용할 언어의 json 파일이 생성된다.

6. 각 파일에 사용할 언어를 작성한다.

en.json

{
  "Hello": "Hello"
}

ko.json

{
  "Hello": "안녕"
}

7. 서버를 재실행 시킨다.

node app

8. 주소창에 http://localhost:4000 을 입력한다.

기본 사용언어인 한국어로 표시되는것을 확인할 수 있다.

http://localhost:4000/enhttp://localhost:4000/ko 로 접속하면 각 언어에 맞게 출력되는것을 확인할 수 있다.

ejs파일에서 사용하기 위해서는 다음과 같이 작성한다.

i18n.js

module.exports = (req, res, next) => {
    i18n.init(req, res);
    res.locals.__ = res.__;  //추가
    return next();
};

i18nExample.ejs

<!DOCTYPE html>
<html>
    <head>
        <title>i18nExample</title>
    </head>
    <body>
        <div><%= __('Hello')%></div>
    </body>
</html>

[참고]

좋은 웹페이지 즐겨찾기