대규모 프로젝트

Lingo.dev CLI는 수십만 개의 번역 키, 다양한 언어 및 복잡한 콘텐츠 구조를 가진 대규모 현지화 프로젝트를 위한 성능 최적화 및 워크플로우 전략을 제공합니다.

방대한 콘텐츠를 가진 프로젝트의 경우, CLI는 병렬 처리 및 CI/CD 통합을 통해 대규모 번역을 효율적으로 처리합니다.

병렬 처리

Lingo.dev CLI는 여러 번역 작업을 동시에 처리하는 병렬 워커를 사용하여 대규모 프로젝트를 더 빠르게 처리합니다.

병렬 처리 활성화:

npx lingo.dev@latest run

이는 번역 작업을 여러 워커에 분산시켜 대규모 프로젝트의 처리 시간을 크게 단축합니다.

워커 동시성 제어:

npx lingo.dev@latest run --concurrency 16

기본 동시성은 10개 워커입니다. 값이 높을수록 더 많은 작업을 동시에 처리하지만 API 속도 제한에 도달할 수 있습니다.

병렬 처리 작동 방식

CLI는 파일 손상을 방지하면서 번역 작업을 동시에 처리하는 워커 풀을 생성합니다:

  1. 작업 분배 — 현지화를 로케일 및 파일별 개별 작업으로 분할
  2. 워커 할당 — 부하 분산을 사용하여 가용 워커에 작업 할당
  3. 경쟁 조건 방지 — 여러 워커가 동일한 파일에 접근할 때 충돌을 방지하기 위해 파일 시스템 잠금 사용
  4. 진행 상황 추적 — 모든 워커의 실시간 진행 상황 보고

대규모 프로젝트 예시:

// 10개 언어에 걸쳐 50개 파일이 있는 프로젝트 = 500개 번역 작업
{
  "locale": {
    "source": "en",
    "targets": ["es", "fr", "de", "ja", "zh", "ko", "pt", "it", "ru", "ar"]
  },
  "buckets": {
    "json": {
      "include": ["src/locales/[locale]/*.json"]
    },
    "markdown": {
      "include": ["docs/[locale]/*.md"]
    }
  }
}

병렬 처리를 통해 이 500개의 작업은 순차적으로 처리하는 대신 워커들에게 분산됩니다.

대상 지정 처리

대규모 프로젝트의 경우, 모든 것을 한 번에 처리하는 대신 특정 부분만 처리할 수 있습니다:

특정 언어 처리:

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

특정 파일 유형 처리:

npx lingo.dev@latest run --bucket json

특정 파일 처리:

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

이러한 선택적 처리는 개발 중 점진적 업데이트에 유용합니다.

CI/CD 통합

대규모 프로젝트는 GitHub Actions 또는 다른 CI/CD 시스템을 사용한 자동화된 번역 워크플로우의 이점을 얻을 수 있습니다.

GitHub Actions 워크플로우:

name: Lingo.dev Localization
on:
  workflow_dispatch:
permissions:
  contents: write
  pull-requests: write
jobs:
  localize:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - uses: lingodotdev/lingo.dev@main
        with:
          api-key: ${{ secrets.LINGODOTDEV_API_KEY }}

이 워크플로우는 전용 브랜치에서 번역을 처리하여 번역 작업을 개발과 분리합니다.

브랜치 기반 워크플로우

대규모 프로젝트의 경우, 번역 작업을 위한 전용 브랜치를 사용하세요:

번역 브랜치 생성:

git checkout main
git checkout -b localize/content-update

# 콘텐츠 변경하기

git push -u origin localize/content-update

GitHub Actions를 통한 번역 트리거:

  1. 저장소 Actions 탭으로 이동
  2. "Lingo.dev Localization" 워크플로우 선택
  3. 번역 브랜치에서 워크플로우 실행
  4. 번역된 콘텐츠 검토 및 병합

이 접근 방식은 콘텐츠 변경과 번역 처리 사이에 명확한 분리를 제공합니다.

성능 고려사항

시스템 리소스:

  • 병렬 처리는 더 많은 CPU와 메모리를 사용합니다
  • 높은 동시성 설정에서 시스템 성능을 모니터링하세요
  • 클라우드 CI/CD 러너는 병렬 워크로드를 효율적으로 처리합니다

API 속도 제한:

  • 높은 동시성은 속도 제한을 유발할 수 있습니다
  • 기본 설정으로 시작하여 성능에 따라 조정하세요
  • Lingo.dev 엔진은 속도 제한을 자동으로 처리합니다

파일 시스템:

  • 대규모 프로젝트는 많은 번역 파일을 생성합니다
  • 필요한 경우 임시 파일에 .gitignore를 사용하세요
  • 콘텐츠 추적을 위해 i18n.lock 파일을 커밋하세요

프로젝트 구성

버킷 분리:

{
  "buckets": {
    "app": {
      "include": ["src/locales/[locale].json"]
    },
    "marketing": {
      "include": ["marketing/[locale]/*.json"]
    },
    "docs": {
      "include": ["docs/[locale]/*.md"]
    }
  }
}

분리된 버킷을 통해 다양한 콘텐츠 영역에 대한 타겟팅된 처리가 가능합니다.

파일 구조:

project/
  src/locales/           # 애플리케이션 콘텐츠
  marketing/             # 마케팅 콘텐츠
  docs/                  # 문서
  i18n.json             # 구성
  i18n.lock             # 콘텐츠 추적

체계적인 구조는 대규모 프로젝트를 관리하기 쉽게 만들고 선택적 처리를 가능하게 합니다.

확장 전략

점진적 처리:

  • 락파일을 사용하여 변경된 콘텐츠만 처리
  • 필요에 따라 특정 언어 또는 버킷 업데이트
  • CI/CD와 결합하여 자동화된 점진적 업데이트 구현

팀 워크플로우:

  • 협업을 위한 브랜치 기반 번역 사용
  • 콘텐츠 변경과 번역 작업 분리
  • 프로덕션에 병합하기 전 번역 검토

리소스 최적화:

  • 시스템 성능에 따라 동시성 조정
  • 대규모 처리 워크로드에 클라우드 러너 활용
  • 처리 시간 모니터링 및 버킷 구성 최적화