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

NHJ·2022년 1월 6일
0
위와 같이 같은 페이지더라도 다국어 서비스를 지원하기 위해서는 페이지를 두개 만들수도 있지만 모듈을 사용하면 편리하다. 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>

[참고]

profile
화이팅!

1개의 댓글

comment-user-thumbnail
2022년 7월 20일

안녕하세요. 좋은 글 잘 봤습니다 ㅎㅎ
다국어 사용할 때 좋은 모듈을 알았네요. 혹시 이미지 같은 경우는 어떻게 해야 할까요?

답글 달기

관련 채용 정보