병렬 처리
Lingo.dev CLI는 run 명령을 통해 병렬 처리를 제공하며, 여러 로컬라이제이션 작업을 동시에 처리하여 대규모 프로젝트의 번역 시간을 획기적으로 단축합니다.
run 명령은 더 이상 사용되지 않는 i18n 명령을 대체하며, 동시 처리를 통해 성능을 크게 개선하면서 동일한 기능을 제공합니다.
기본 사용법
병렬 처리로 모든 번역 처리:
npx lingo.dev@latest run
동시성 수준 제어:
npx lingo.dev@latest run --concurrency 20
run 명령은 i18n 명령과 동일한 i18n.json 구성 및 i18n.lock 파일을 사용합니다.
병렬 처리 작동 방식
Lingo.dev CLI는 로컬라이제이션 작업을 여러 동시 워커에 분산하여 서로 다른 언어 쌍과 파일 패턴을 동시에 처리합니다.
아키텍처 개요:
- 작업 생성 — CLI가 구성을 분석하고 각 로케일/파일 조합에 대한 개별 작업을 생성합니다
- 워커 분산 — 작업이 여러 워커 프로세스에 분산됩니다
- 동시 처리 — 워커가 파일 충돌을 방지하면서 번역을 동시에 처리합니다
- 결과 집계 — 완료된 번역이 대상 파일에 안전하게 기록됩니다
동시성 제어
워커 수 설정:
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-locale로i18n.json구성의locale.targets재정의 (참고:i18n명령의--locale옵션을 대체합니다.)--source-locale로i18n.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에서 각 청크를 수신할 때마다 번역으로 점진적으로 채워집니다. 프로세스가 중단되면 중단된 지점부터 번역을 재개할 수 있습니다.