NestJS는 자바스크립트 기반의 프레임워크로, 웹 애플리케이션을 개발할 때 사용됩니다. 이 프레임워크를 사용하여 국제화(i18n)를 구현하는 방법에 대해 알아보겠습니다.
1. i18n 라이브러리 설치
NestJS에서 국제화를 구현하기 위해서는 i18n 라이브러리를 설치해야 합니다. 다음 명령어를 사용하여 i18n 라이브러리를 설치합니다.
npm install i18n --save
2. i18n 설정
NestJS 애플리케이션의 국제화 설정은 main.ts
파일에서 이루어집니다. main.ts
파일의 bootstrap()
함수에서 i18n 미들웨어를 설정합니다. 다음은 i18n 설정 예시입니다.
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import * as i18n from 'i18n';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
// i18n 미들웨어 설정
i18n.configure({
locales: ['en', 'ko'],
defaultLocale: 'en',
directory: __dirname + '/locales',
queryParameter: 'lang',
register: global,
});
app.use(i18n.init);
await app.listen(3000);
}
bootstrap();
위의 예제에서는 locales
에 지원할 언어의 목록을 설정하고, defaultLocale
에 기본 언어를 설정합니다. directory
에는 언어 파일들이 저장된 경로를 지정하며, queryParameter
는 언어 설정에 사용될 쿼리 파라미터를 지정합니다.
3. 언어 파일 작성
locales
디렉토리에 언어 파일을 작성해야 합니다. 각 언어마다 별도의 JSON 파일을 생성하고, 모든 언어의 번역 내용을 포함하도록 작성합니다.
다음은 예시로 ‘en.json’과 ‘ko.json’ 파일을 작성한 것입니다.
en.json:
{
"welcome": "Welcome to our website!",
"about": "About Us",
"contact": "Contact Us"
}
ko.json:
{
"welcome": "우리 웹사이트에 오신 것을 환영합니다!",
"about": "회사 소개",
"contact": "연락처"
}
4. 국제화 적용하기
NestJS에서는 @nestjs/i18n
모듈을 사용하여 국제화를 적용할 수 있습니다. 컨트롤러에서 이 모듈을 가져와서 다음과 같이 사용할 수 있습니다.
import { Controller, Get, Req, Res } from '@nestjs/common';
import { I18nRequestScopeService } from 'nestjs-i18n';
@Controller()
export class AppController {
constructor(private readonly i18n: I18nRequestScopeService) {}
@Get()
async index(@Req() req, @Res() res) {
const translations = await this.i18n.translate('welcome');
res.render('index', { translations });
}
}
위의 예제에서는 I18nRequestScopeService
를 사용하여 welcome
키에 해당하는 번역 내용을 가져오고, res.render()
메소드를 통해 뷰 템플릿으로 전송합니다.
이제 NestJS 기반 웹 애플리케이션에서 국제화를 적용하는 방법에 대해 알아보았습니다. i18n 라이브러리를 사용하여 언어 파일을 작성하고, 컨트롤러에서 I18nRequestScopeService를 사용하여 번역 내용을 가져올 수 있습니다.
#nestjs #국제화