본문 바로가기

nodejs

[Node.js] express i18n 다국어 사용방법

백엔드에서 i18n 라이브러리르 사용하여 국제화 작업을 할 수 있는 방법을 소개 하겠습니다. 

 

i18n은 언어(ko, en..) 별로  설정이 가능하며 sprintf 스타일 표현식도 지원을 하고 있습니다. 현재 node.js에서 가장 많이 사용하고 있는 라이브러리로 사용법도 굉장히 간단합니다. 

 

클라이언트에서 사용하는 언어에 따라 응답 메시지를 보내주는 코드를 구현해보겠습니다. 

설치

npm install i18n --save

설정

/** i18n 옵션 설정 */
i18n.configure({
    locales:['ko','en'], //사용언어 설정 / 'de' 나 'ja' , 'fr' 등등 추가 가능
    directory: __dirname + '/locales', // 사용언어에 대한 템플릿폴더 생성위치,
    defaultLocale: 'ko', //기본 사용언어 설정
    register: global, //전역으로 사용
});
app.use(i18n.init)

 

위 설정으로 코드를 실행했을 때 설정한 directory에 폴더가 없을 경우에는 아래 그림처럼 폴더와 파일을 생성해준다. 

생성된 ko,en.json 파일에 사용할 key,value를 추가해줍니다.

//파일명 ko.json 
{
    "TEST": "[ko] i18n Test",
    "TEMPLATE_LITERALS_TEST": "[ko] i18n %s Test"
}
//파일명 en.json 
{
    "TEST": "[en] i18n Test",
    "TEMPLATE_LITERALS_TEST": "[en] i18n %s Test"
}

사용법

__("{KEY}")를 사용하여 값을 가져올 수 있다.  (configure에서 옵션 register : global로 설정해야만 가능하다.)

console.log("=================== 테스트 ===================")
console.log(__("TEST")) // i18n Test 출력
console.log(__("TEMPLATE_LITERALS_TEST"),'Template Literals') // i18n Template Literals Test 출력

 

전체 소스

const express = require('express')
const app = express()
const port = 3000
const i18n = require("i18n");

/** 옵션 설정 */
i18n.configure({
    locales:['ko','en'], //사용언어 설정 / 'de' 나 'ja' , 'fr' 등등 추가 가능
    directory: __dirname + '/locales', // 사용언어에 대한 템플릿폴더 생성위치,
    defaultLocale: 'ko', //기본 사용언어 설정
    register: global, //전역으로 사용
});
app.use(i18n.init)

app.post('/', (req,res,next) => {
    //console.log(__("TEMPLATE_LITERALS_TEST"),'Template Literals ') // i18n Template Literals Test 출력
    res.send(__("TEST"))
})

app.listen(port, () => {
    console.log(`Example app listening at http://localhost:${port}`)
})

 

 

결과 

  Headers
  Accept-Language : ko 


  Headers
  Accept-Language : en

 

 

 

참고 : https://www.npmjs.com/package/i18n