/i18nexus-tools/i18n-wrapper
🔧

i18n-wrapper

한국어 텍스트를 자동으로 t()로 감싸고 import를 추가합니다

개요

i18n-wrapper는 코드에서 하드코딩된 한국어 텍스트를 자동으로 감지하여 t() 함수로 래핑하고, 필요한 import 문을 추가하는 CLI 도구입니다.

JSX 요소 내 한국어 텍스트 자동 감지
문자열 리터럴 및 템플릿 리터럴 지원
이미 래핑된 텍스트 자동 건너뛰기
useTranslation import 자동 추가
코드 포매팅 보존

설치

전역 설치 (권장):

npm install -g i18nexus-tools

또는 npx로 직접 실행:

npx i18n-wrapper

기본 사용법

전체 앱 디렉토리 처리

npx i18n-wrapper --pattern "app/**/*.tsx"

app 디렉토리 내 모든 .tsx 파일에서 한국어 텍스트를 래핑합니다.

작은 범위부터 시작

npx i18n-wrapper --pattern "app/about/page.tsx"

처음에는 단일 파일이나 작은 디렉토리부터 시작하여 결과를 확인하세요.

특정 파일만 처리

npx i18n-wrapper --pattern "app/page.tsx"

단일 파일만 처리합니다.

keyFirst.title

keyFirst.description

keyFirst.config

01

keyFirst.step.write

<h1>about.title1</h1>

02

keyFirst.step.wrap

npx i18n-wrapper --key-first

03

keyFirst.step.extract

npx i18n-extractor

04

keyFirst.step.translate

locales/about/ko.json
keyFirst.before
keyFirst.after

keyFirst.locale

변환 예제

이전

export default function Welcome() {
  return (
    <div>
      <h1>환영합니다</h1>
      <p>i18nexus 사용법</p>
      <button>시작하기</button>
    </div>
  );
}

이후

import { useTranslation } from "i18nexus";

export default function Welcome() {
  const { t } = useTranslation();
  return (
    <div>
      <h1>{t("환영합니다")}</h1>
      <p>{t("i18nexus 사용법")}</p>
      <button>{t("시작하기")}</button>
    </div>
  );
}

복잡한 예제

이전:

const title = "제목";
const msg = \`안녕하세요 \${name}님\`;

return (
  <div title="툴팁 텍스트">
    <p>{"문자열"}</p>
  </div>
);

이후:

const { t } = useTranslation();
const title = t("제목");
const msg = t(\`안녕하세요 \${name}님\`);

return (
  <div title={t("툴팁 텍스트")}>
    <p>{t("문자열")}</p>
  </div>
);

명령어 옵션

--pattern, -p문자열

처리할 파일의 glob 패턴을 지정합니다.

--pattern "app/**/*.{ts,tsx}"
--key-first플래그

keyFirst.option

--help, -h플래그

도움말 메시지를 표시합니다.

스마트 감지 기능

자동으로 처리되는 경우:

  • JSX 텍스트 노드
    <div>한국어 텍스트</div> → <div>{t("한국어 텍스트")}</div>
  • JSX 속성값
    <div title="제목"> → <div title={t("제목")}>
  • 문자열 리터럴
    const text = "안녕"; → const text = t("안녕");
  • 템플릿 리터럴
    const msg = \`안녕 \${name}\`; → const msg = t(\`안녕 \${name}\`);

자동으로 건너뛰는 경우:

  • 이미 t()로 래핑된 텍스트
  • 영어만 포함된 텍스트
  • 숫자나 특수문자만 포함된 텍스트
  • 주석 내부의 텍스트

모범 사례

작은 범위부터 시작

keyFirst.review

npx i18n-wrapper -p "app/about/page.tsx" && git diff

버전 관리 시스템 사용

Git 등의 버전 관리를 사용하여 변경사항을 되돌릴 수 있도록 준비하세요.

작은 범위부터 시작

처음에는 단일 파일이나 작은 디렉토리부터 시작하여 결과를 확인하세요.

수동 검토 필요

자동 변환 후에는 항상 변경된 파일들을 검토하여 의도하지 않은 변경이 없는지 확인하세요.

다음 단계

i18n-wrapper - i18nexus Tools Documentation