병렬 처리

Lingo.dev CLIrun 명령을 통해 병렬 처리를 제공하며, 여러 로컬라이제이션 작업을 동시에 처리하여 대규모 프로젝트의 번역 시간을 획기적으로 단축합니다.

run 명령은 더 이상 사용되지 않는 i18n 명령을 대체하며, 동시 처리를 통해 성능을 크게 개선하면서 동일한 기능을 제공합니다.

기본 사용법

병렬 처리로 모든 번역 처리:

npx lingo.dev@latest run

동시성 수준 제어:

npx lingo.dev@latest run --concurrency 20

run 명령은 i18n 명령과 동일한 i18n.json 구성 및 i18n.lock 파일을 사용합니다.

병렬 처리 작동 방식

Lingo.dev CLI는 로컬라이제이션 작업을 여러 동시 워커에 분산하여 서로 다른 언어 쌍과 파일 패턴을 동시에 처리합니다.

아키텍처 개요:

  1. 작업 생성 — CLI가 구성을 분석하고 각 로케일/파일 조합에 대한 개별 작업을 생성합니다
  2. 워커 분산 — 작업이 여러 워커 프로세스에 분산됩니다
  3. 동시 처리 — 워커가 파일 충돌을 방지하면서 번역을 동시에 처리합니다
  4. 결과 집계 — 완료된 번역이 대상 파일에 안전하게 기록됩니다

동시성 제어

워커 수 설정:

npx lingo.dev@latest run --concurrency 15

기본 동시성은 10개의 워커입니다. 값이 높을수록 번역을 더 빠르게 처리하지만 더 많은 시스템 리소스를 소비하며 API 속도 제한에 도달할 수 있습니다.

최적 동시성은 시스템 성능과 번역 제공업체 제한에 따라 달라집니다. 기본값으로 시작하여 성능에 따라 조정하세요.

대상 지정 처리

특정 언어 처리:

npx lingo.dev@latest run --target-locale es --target-locale fr

특정 파일 유형 처리:

npx lingo.dev@latest run --bucket json

특정 파일 처리:

npx lingo.dev@latest run --file components/header

특정 키 처리:

npx lingo.dev@latest run --key welcome.title

minimatch 라이브러리에서 정의한 glob 패턴을 허용합니다.

재번역 강제:

npx lingo.dev@latest run --force

팁: 재번역 시 최상의 결과를 얻으려면 먼저 purge 명령을 사용하여 번역을 제거한 다음 --force 없이 run 명령을 실행하세요. 이 방식은 내장된 캐싱 메커니즘을 활용하여 더 효율적인 재번역을 수행합니다.

이러한 타겟팅 옵션은 i18n 명령과 동일하게 작동하지만 작업을 병렬로 처리합니다.

경합 조건 방지

Lingo.dev CLI는 여러 보호 장치를 통해 병렬 처리 중 파일 손상을 방지합니다:

I/O 동기화 — 파일 시스템 작업이 동기화되어 여러 워커가 동시에 동일한 파일에 쓰는 것을 방지합니다.

잠금 파일 보호i18n.lock 파일은 원자적 연산을 사용하여 동시 업데이트 중 손상을 방지합니다.

트랜잭션 처리 — 각 작업은 완전히 완료되거나 깔끔하게 실패하여 일관된 파일 상태를 보장합니다.

성능 최적화

높은 동시성 값을 사용할 때는 시스템 리소스를 모니터링하세요. CLI는 효율성을 위해 설계되었지만 매우 큰 프로젝트는 리소스 모니터링의 이점을 얻을 수 있습니다.

기본값으로 시작:

npx lingo.dev@latest run
# Uses optimized concurrency settings

점진적으로 확장:

npx lingo.dev@latest run --concurrency 20
# Increase if system handles load well

반복을 위한 특정 콘텐츠 타겟팅:

npx lingo.dev@latest run --file src/components
# Process only changed components

호환성

run 명령은 기존 구성과 완전한 호환성을 유지합니다:

  • 동일한 i18n.json 형식 — 구성 변경 불필요
  • 동일한 i18n.lock 동작 — 증분 번역 추적이 동일하게 작동
  • 동일한 파일 형식 — 모든 버킷 유형 지원
  • 동일한 타겟팅 옵션--bucket, --key, --file, --force 플래그가 동일하게 작동
  • 로케일 지정 옵션:
    • --target-localei18n.json 구성의 locale.targets 재정의 (참고: i18n 명령의 --locale 옵션을 대체합니다.)
    • --source-localei18n.json 구성의 locale.source 재정의

i18n 명령에서 마이그레이션:

# Current command
npx lingo.dev@latest i18n

# Parallel equivalent
npx lingo.dev@latest run

모든 기능이 성능을 크게 향상시키면서 직접 전환됩니다.

--locale 옵션은 별도의 --target-locale--source-locale 옵션으로 대체됩니다.

워커 풀 아키텍처

Lingo.dev CLI는 정교한 워커 풀 시스템을 사용합니다:

동적 할당 — 시스템 리소스 및 동시성 설정에 따라 워커가 생성됩니다.

작업 분산 — 최적화된 알고리즘을 사용하여 워커 전체에 작업이 균등하게 분산됩니다.

진행 상황 추적 — 모든 병렬 작업에 대한 실시간 진행 상황 모니터링.

리소스 관리 — 처리가 완료되면 자동으로 정리 및 리소스 할당 해제.

자동 캐싱 — 번역에 Lingo.dev API를 사용할 때 대용량 로케일 파일은 청크로 분할됩니다. 대상 로케일 파일은 API에서 각 청크를 수신할 때마다 번역으로 점진적으로 채워집니다. 프로세스가 중단되면 중단된 지점부터 번역을 재개할 수 있습니다.