Skip to content
i18n 문서로 돌아가기

createCoreI18n

설정
@hua-labs/i18n-core

i18n Provider를 생성하는 팩토리 함수입니다. Next.js App Router와 호환되며, SSR 지원과 다양한 번역 로딩 방식을 제공합니다.

설치

Terminalbash
npm install @hua-labs/i18n-core
Importtsx
import { createCoreI18n } from '@hua-labs/i18n-core';

개요

createCoreI18n은 i18n Provider를 생성하는 팩토리 함수입니다. Next.js App Router와 완벽하게 호환되며, SSR 지원과 다양한 번역 로딩 방식을 제공합니다.

SSR 지원
서버사이드 렌더링 완벽 지원
API 라우트 로더
번역 파일 동적 로딩
정적 파일 로더
public 폴더에서 직접 로드
커스텀 로더
직접 로더 함수 구현
디버그 모드
누락 키 추적 및 로깅
타입 안전
완전한 TypeScript 지원

API 레퍼런스

옵션

defaultLanguagestring"ko"Default language code
fallbackLanguagestring"en"Fallback language when translation is missing
namespacesstring[]["common"]Translation namespaces to load
translationLoader"api" | "static" | "custom""api"How to load translation files
translationApiPathstring"/api/translations"API route path for translations
supportedLanguagesArray<{ code: string; name: string; nativeName: string }> | string[]-List of supported languages
initialTranslationsRecord<string, Record<string, Record<string, string>>>-Pre-loaded translations for SSR
loadTranslations(language: string, namespace: string) => Promise<Record<string, string>>-Custom translation loader function (for 'custom' loader mode or standalone loaders)
baseUrlstring-Base URL for API requests (required for SSR to use absolute URLs)
localFallbackBaseUrlstring"http://localhost:3010"Local dev fallback URL when baseUrl is not set
autoLanguageSyncbooleanfalseAuto-sync language change events across tabs/windows
debugbooleanfalseEnable debug mode

반환값

ProviderReact.ComponentType<{ children: React.ReactNode }>I18n Provider component to wrap your app

코드 예시

docs:common.basicUsage

tsx
// app/layout.tsx
import { createCoreI18n } from '@hua-labs/i18n-core';

const I18nProvider = createCoreI18n({
  defaultLanguage: 'ko',
  fallbackLanguage: 'en',
  namespaces: ['common', 'navigation'],
  translationLoader: 'api',
});

export default function RootLayout({ children }: { children: React.ReactNode }) {
  return (
    <html>
      <body>
        <I18nProvider>{children}</I18nProvider>
      </body>
    </html>
  );
}

i18n:examples.withApiRoute

tsx
// app/api/translations/[language]/[namespace]/route.ts
import { NextResponse } from "next/server";
import fs from "fs";
import path from "path";

export async function GET(
  request: Request,
  { params }: { params: Promise<{ language: string; namespace: string }> }
) {
  const { language, namespace } = await params;

  const filePath = path.join(
    process.cwd(),
    "public/translations",
    language,
    `${namespace}.json`
  );

  try {
    const content = fs.readFileSync(filePath, "utf-8");
    return NextResponse.json(JSON.parse(content));
  } catch {
    return NextResponse.json({}, { status: 404 });
  }
}

i18n:examples.translationFiles

tsx
// public/translations/ko/common.json
{
  "welcome": "환영합니다",
  "greeting": "안녕하세요, {{name}}님!"
}

// public/translations/en/common.json
{
  "welcome": "Welcome",
  "greeting": "Hello, {{name}}!"
}

사용 사례

Next.js 앱

Next.js App Router 기반 다국어 앱 구축

다국어 사이트

여러 언어를 지원하는 웹사이트 구축

SSR 지원

서버사이드 렌더링과 완벽 호환