|Labs
데모 예약플랫폼
React (Lingo Compiler)
알파
React (MCP)React (i18n)레거시 CLI (v0)
사용 중단

Lingo.dev CLI

  • 작동 방식
  • 설정
  • 빠른 시작
  • 모노레포

구성

  • 지원 형식
  • i18n.json
  • i18n.lock
  • 지원 로캘

기능

  • 기존 번역 활용
  • 언어 추가
  • 오버라이드
  • 번역자 노트
  • 번역 키
  • 키 이름 변경
  • 키 잠금
  • 키 무시
  • 키 보존
  • AI로 키 추출

성능

  • 대규모 프로젝트
  • 병렬 처리
  • 비용 예상

재번역

  • 자동 재번역
  • 재번역
  • 번역 제거

이 문서는 레거시 CLI (v0)를 다루며 현재는 사용 중단되었습니다. 현재 CLI는 v1입니다. 현재 CLI 문서 보기

지원 형식

Lingo.dev CLI는 다양한 파일 형식을 파싱하고 번역하기 위해 버킷 유형을 사용합니다. 각 버킷 유형은 특정 형식에 맞게 설계된 전용 파서입니다. CLI가 번역할 파일을 지정하려면 i18n.json에서 하나 이상의 버킷을 구성하세요.

버킷 유형#

버킷 유형형식출력 모드[locale] 필요
jsonJSON 파일로캘별 개별 파일예
json5JSON5 파일로캘별 개별 파일예
jsoncJSONC 파일(주석 포함)로캘별 개별 파일예
json-dictionaryJSON 사전(플랫 키-값)로캘별 개별 파일예
yamlYAML 파일로캘별 개별 파일예
yaml-root-key로캘 루트 키가 있는 YAML원본 파일 수정아니요
markdownMarkdown 파일로캘별 개별 파일예
mdxMDX 파일로캘별 개별 파일예
markdocMarkdoc 파일로캘별 개별 파일예
htmlHTML 파일로캘별 개별 파일예
mjmlMJML 이메일 템플릿로캘별 개별 파일예
androidAndroid XML 리소스로캘별 개별 파일예
xcode-stringsXcode .strings 파일로캘별 개별 파일예
xcode-stringsdictXcode .stringsdict 파일로캘별 개별 파일예
xcode-xcstringsXcode .xcstrings 카탈로그원본 파일 수정아니요
flutterFlutter ARB 파일로캘별 개별 파일예
poGNU gettext PO 파일로캘별 개별 파일예
propertiesJava .properties 파일로캘별 개별 파일예
csvCSV 파일원본 파일 수정아니요
csv-per-localeCSV 파일(로캘별 1개)로캘별 개별 파일예
xml범용 XML 파일로캘별 개별 파일예
xliffXLIFF 파일로캘별 개별 파일예
srtSRT 자막 파일로캘별 개별 파일예
vttVTT 자막 파일로캘별 개별 파일예
phpPHP 로컬라이제이션 배열로캘별 개별 파일예
typescriptTypeScript 파일로캘별 개별 파일예
vue-jsonVue i18n JSON 블록로캘별 개별 파일예
txt일반 텍스트 파일로캘별 개별 파일예

출력 모드#

버킷은 다음 두 가지 출력 모드 중 하나로 동작합니다:

로캘별 개별 파일 - CLI가 각 대상 언어마다 별도의 파일을 생성합니다. include 패턴에는 [locale] 플레이스홀더가 반드시 포함되어야 합니다:

json
{
  "buckets": {
    "json": {
      "include": ["locales/[locale].json"]
    }
  }
}

이렇게 하면 locales/en.json, locales/es.json, locales/fr.json 등이 생성됩니다.

원본 파일 수정 - CLI가 소스 콘텐츠가 들어 있는 동일한 파일에 번역을 다시 기록합니다. 이 경우 [locale] 플레이스홀더는 사용하지 않습니다:

json
{
  "buckets": {
    "csv": {
      "include": ["translations.csv"]
    }
  }
}

CSV 파일은 일반적으로 하나의 파일 안에서 열 단위로 모든 로캘을 저장합니다. Xcode .xcstrings 카탈로그와 루트 키가 있는 YAML도 비슷한 방식으로 동작합니다.

구성 예시#

JSON을 사용하는 웹 앱#

json
{
  "buckets": {
    "json": {
      "include": ["src/locales/[locale].json"],
      "lockedKeys": ["brand/name"]
    }
  }
}

Markdown을 사용하는 문서 사이트#

json
{
  "buckets": {
    "markdown": {
      "include": ["docs/[locale]/*.md"],
      "exclude": ["docs/[locale]/drafts/*.md"]
    }
  }
}

모바일 앱(iOS + Android)#

json
{
  "buckets": {
    "xcode-xcstrings": {
      "include": ["ios/Localizable.xcstrings"]
    },
    "android": {
      "include": ["android/app/src/main/res/values-[locale]/strings.xml"]
    }
  }
}

여러 형식을 사용하는 모노레포#

json
{
  "buckets": {
    "json": {
      "include": ["apps/web/locales/[locale].json"]
    },
    "mdx": {
      "include": ["packages/docs/content/[locale]/*.mdx"]
    },
    "flutter": {
      "include": ["apps/mobile/lib/l10n/app_[locale].arb"]
    }
  }
}

버킷별 기능#

일부 버킷은 include/exclude 패턴 외에도 추가 기능을 지원합니다:

기능지원 버킷설명
키 잠금키-값 형식(JSON, YAML 등)번역 없이 소스 값을 그대로 복사
키 무시키-값 형식대상 파일에서 키를 완전히 제외
키 보존키-값 형식한 번 초기화한 뒤 이후 업데이트로부터 보호
번역가 메모JSONC, XCStrings번역 품질을 높일 수 있도록 주석으로 문맥 제공

Include 패턴 규칙#

  • 패턴은 i18n.json 파일 위치를 기준으로 하는 상대 경로입니다
  • 로캘 코드용 플레이스홀더로 [locale]를 사용하세요("로캘별 개별 파일" 버킷에 필요)
  • 별표(*)는 모든 파일명과 일치합니다: locales/[locale]/*.json
  • 재귀 패턴(**)은 깊이에 관계없이 파일과 일치합니다: src/**/[locale].json, config/locales/**/[locale].yml. 패턴에 **가 포함되면 node_modules, .git, dist, build, .next, .turbo은 기본적으로 제외됩니다. 필요에 따라 여기에 exclude 항목을 추가하세요(CLI 0.135.0+ 필요)
  • 파일 확장자는 파싱에 영향을 주지 않습니다. 어떤 파서를 사용할지는 버킷 유형이 결정합니다

다음 단계#

i18n.json
전체 구성 레퍼런스
Key Locking
특정 키가 번역되지 않도록 보호
기존 번역
이미 번역이 있는 프로젝트에 CLI 추가
설정
CLI 설치 및 구성

이 페이지가 도움이 되었나요?

Max PrilutskiyMax Prilutskiy·업데이트됨 5일 전·3 min read