작가:
    생성:2026-01-10마지막 업데이트:2026-06-23

    기존 Next.js 애플리케이션을 다국어(i18n)로 만드는 방법 (i18n 가이드 2026)

    www.youtube.com

    GitHub에서 애플리케이션 템플릿을 확인하세요.

    목차

    기존 애플리케이션을 국제화하는 것이 왜 어려울까요?

    단일 언어로 만들어진 앱에 여러 언어를 추가해 본 적이 있다면 그 고통을 아실 겁니다. 단순히 "어려운" 것을 넘어 지루한 작업입니다. 모든 파일을 뒤져 모든 텍스트 문자열을 찾아 별도의 사전 파일로 옮겨야 합니다.

    다음은 위험한 부분입니다: 레이아웃이나 로직을 손상시키지 않고 모든 텍스트를 코드 훅으로 교체하는 것입니다. 이는 몇 주 동안 새로운 기능 개발을 중단시키고 끝없는 리팩터링처럼 느껴지는 작업입니다.

    Intlayer 컴파일러란 무엇인가요?

    Intlayer Compiler는 그런 수작업을 건너뛰기 위해 만들어졌습니다. 개발자가 문자열을 수동으로 추출하는 대신, 컴파일러가 알아서 해줍니다. 컴파일러는 코드를 스캔하고 텍스트를 찾아 AI를 사용하여 백그라운드에서 사전을 생성합니다. 그런 다음 빌드 단계 중에 소스 코드를 수정하여 필요한 i18n 훅을 주입합니다. 기본적으로 앱을 단일 언어인 것처럼 계속 작성하면 컴파일러가 다국어 변환을 네이티브로 처리합니다.

    컴파일러 문서: /ko/doc/compiler

    제한 사항

    컴파일러는 컴파일 시점에 코드 분석 및 변환(훅 삽입 및 사전 생성)을 수행하기 때문에 애플리케이션의 빌드 시간이 느려질 수 있습니다.

    활발한 개발 중(dev 모드) 이 영향을 제한하기 위해 컴파일러를 'build-only' 모드로 설정하거나 필요하지 않을 때 비활성화할 수 있습니다.


    Next.js 애플리케이션에서 Intlayer 설정 단계별 가이드

    1. 종속성 설치

      선호하는 패키지 관리자를 사용하여 필요한 패키지를 설치합니다:

      bash
      npx intlayer-cli init --interactive
      --interactive 플래그는 선택 사항입니다. AI 에이전트인 경우 intlayer-cli init를 사용하세요.
      이 명령은 환경을 감지하고 필요한 패키지를 설치합니다. 예를 들어:
      bash
      npm install intlayer next-intlayernpm install @intlayer/babel --save-dev
      • intlayer

        구성 관리, 번역, 콘텐츠 선언, 트랜스파일링 및 CLI 명령을 위한 국제화 도구를 제공하는 핵심 패키지입니다.

      • next-intlayer

        Intlayer를 Next.js와 통합하는 패키지입니다. Next.js 국제화를 위한 컨텍스트 공급자와 훅을 제공합니다. 또한 Intlayer를 Webpack 또는 Turbopack과 통합하기 위한 Next.js 플러그인과 선호 로캘 감지, 쿠키 관리 및 URL 리디렉션을 처리하는 미들웨어가 포함되어 있습니다.

    2. 프로젝트 구성

      애플리케이션의 언어를 정의하기 위한 설정 파일을 생성합니다:

      intlayer.config.ts
      import { Locales, type IntlayerConfig } from "intlayer";const config: IntlayerConfig = {  internationalization: {    locales: [Locales.ENGLISH, Locales.KOREAN],    defaultLocale: Locales.KOREAN,  },  routing: {    mode: "search-params",  },  compiler: {    /**     * 개발 중에 컴파일러를 건너뛰고 시작 시간을 단축하려면 'build-only'로 설정하십시오.     */    enabled: true,    /**     * 최적화된 사전의 출력 디렉터리.     */    output: ({ locale, key }) => `compiler/${locale}/${key}.json`,    /**     * 키 없이 생성된 파일에 콘텐츠만 삽입합니다.     */    noMetadata: false,    /**     * 사전 키 접두사     */    dictionaryKeyPrefix: "", // Remove base prefix  },  ai: {    provider: "openai",    model: "gpt-5-mini",    apiKey: process.env.OPEN_AI_API_KEY,    applicationContext: "이것은 간단한 지도 애플리케이션 예시입니다",  },};export default config;
      참고: 환경 변수에 OPEN_AI_API_KEY가 설정되어 있는지 확인하세요.
      이 구성 파일을 통해 지역화된 URL, 프록시 리디렉션, 쿠키 매핑, 콘텐츠 선언의 위치 및 확장자를 설정하고 콘솔에서 Intlayer 로그를 비활성화하는 등 다양한 작업을 수행할 수 있습니다. 사용 가능한 모든 매개변수 목록은 구성 문서를 참조하세요.
    3. Next.js 구성에 Intlayer 통합

      Intlayer를 사용하도록 Next.js 설정을 구성합니다:

      next.config.ts
      import type { NextConfig } from "next";import { withIntlayer } from "next-intlayer/server";const nextConfig: NextConfig = {  /* 여기에 선택적 추가 Next.js 구성 */};export default withIntlayer(nextConfig);
      withIntlayer() Next.js 플러그인은 Next.js와 Intlayer를 통합하는 데 사용됩니다. 사전 파일의 빌드를 보장하고 개발 모드에서 파일를 감시합니다. Webpack 또는 Turbopack 환경 내에서 Intlayer 환경 변수를 정의합니다. 또한 성능 최적화를 위한 별칭을 제공하고 서버 컴포넌트와 완벽하게 연동됩니다.

    TypeScript 설정

    Intlayer는 TypeScript의 이점을 활용하고 코드베이스를 더욱 강력하게 만들기 위해 모듈 확장(module augmentation)을 사용합니다.

    자동 완성

    번역 오류

    TypeScript 설정에 자동 생성된 타입이 포함되어 있는지 확인하세요.

    tsconfig.json
    {  // ... 기존 TypeScript 설정  "include": [    // ... 기존 TypeScript 설정    ".intlayer/**/*.ts", // 자동 생성된 타입 포함  ],}

    Git 설정

    Intlayer에서 생성한 파일을 무시하는 것이 좋습니다. 이를 통해 Git 리포지토리에 커밋되는 것을 방지합니다.

    이렇게 하려면 .gitignore 파일에 다음 지침을 추가할 수 있습니다:

    .gitignore
    # Intlayer에서 생성된 파일 무시.intlayer

    VS Code 익스텐션

    Intlayer를 사용한 개발 환경을 개선하기 위해 공식 Intlayer VS Code 익스텐션을 설치할 수 있습니다.

    VS Code Marketplace에서 설치

    이 익스텐션은 다음을 제공합니다:

    • 번역 키 자동 완성.
    • 누락된 번역에 대한 실시간 오류 감지.
    • 번역된 콘텐츠의 인라인 미리보기.
    • 번역을 쉽게 생성하고 업데이트하기 위한 빠른 작업(Quick actions).

    익스텐션 사용법에 대한 자세한 내용은 Intlayer VS Code 익스텐션 문서를 참조하세요.

    1. 컴포넌트 콘텐츠 추출

      선택사항

      기존 코드베이스가 있는 경우 수천 개의 파일을 변환하는 데 시간이 많이 걸릴 수 있습니다.

      이 프로세스를 용이하게 하기 위해 Intlayer는 컴포넌트를 변환하고 콘텐츠를 추출하기 위한 컴파일러 / 추출기를 제안합니다.

      설정하려면 intlayer.config.ts 파일에 compiler 섹션을 추가할 수 있습니다.

      intlayer.config.ts
      import { type IntlayerConfig } from "intlayer";
      
      const config: IntlayerConfig = {
        // ... 나머지 구성
        compiler: {
          /**
           * 컴파일러 활성화 여부를 나타냅니다.
           */
          enabled: true,
      
          /**
           * 출력 파일 경로를 정의합니다.
           */
          output: ({ fileName, extension }) => `./${fileName}${extension}`,
      
          /**
           * 변환 후 컴포넌트를 저장할지 여부를 나타냅니다. 그렇게 하면 컴파일러를 한 번만 실행하여 앱을 변환한 다음 제거할 수 있습니다.
           */
          saveComponents: false,
      
          /**
           * 사전 키 접두사
           */
          dictionaryKeyPrefix: "",
        },
      };
      
      export default config;

      컴포넌트를 변환하고 콘텐츠를 추출하기 위해 추출기를 실행합니다

      bash
      npx intlayer extract

    더 알아보기

    더 나아가려면 비주얼 에디터를 구현하거나 CMS를 사용하여 콘텐츠를 외부화할 수 있습니다.