문서로 돌아가기

Lazy Loading

namespace 번역 파일을 처음 필요한 시점에 불러와 초기 번들 부담을 줄입니다.

현재 API 기준

Lazy loading은 createI18n 옵션이 아닙니다. I18nProvider에 loadNamespace를 전달하면 자동으로 lazy mode가 활성화됩니다.

설정 순서

1

namespace loader 작성

namespace와 language를 받아 해당 JSON 파일을 동적으로 import합니다.

example.typescripttypescript
// locales/index.ts
export async function loadNamespace(namespace: string, language: string) {
  const module = await import(`./${namespace}/${language}.json`);
  return module.default;
}
2

I18nProvider에 연결

fallback namespace는 공통 문구를 위해 미리 로드합니다.

example.tsxtsx
<I18nProvider
  initialLanguage="ko"
  loadNamespace={loadNamespace}
  fallbackNamespace="common"
  preloadNamespaces={["common"]}
>
  <App />
</I18nProvider>
3

컴포넌트에서 namespace 요청

useTranslation(namespace)가 필요한 namespace를 자동으로 요청합니다.

example.tsxtsx
"use client";

import { useTranslation } from "i18nexus";

export function ProductPage() {
  const { t, isReady } = useTranslation("product");

  if (!isReady) return null;

  return <h1>{t("Product list")}</h1>;
}

관련 문서

Lazy Loading - i18nexus Documentation