大規模プロジェクト

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. 進捗追跡 — すべてのワーカーにわたるリアルタイムの進捗をレポート

大規模プロジェクトの例:

// Project with 50 files across 10 languages = 500 translation tasks
{
  "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 --target-locale es --target-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
# Make content changes
git push -u origin localize/content-update

GitHub Actions経由での翻訳のトリガー:

  1. リポジトリのActionsタブに移動
  2. 「Lingo.dev Localization」ワークフローを選択
  3. 翻訳ブランチでワークフローを実行
  4. 翻訳されたコンテンツをレビューしてマージ

このアプローチにより、コンテンツの変更と翻訳処理を明確に分離できます。

パフォーマンスに関する考慮事項

システムリソース:

  • 並列処理はより多くのCPUとメモリを使用します
  • 高い並行性設定でシステムパフォーマンスを監視してください
  • クラウドCI/CDランナーは並列ワークロードを効率的に処理します

APIレート制限:

  • 高い並行性はレート制限をトリガーする可能性があります
  • デフォルト設定から始めて、パフォーマンスに基づいて調整してください
  • Lingo.dev Engineはレート制限を自動的に処理します

ファイルシステム:

  • 大規模プロジェクトは多数の翻訳ファイルを生成します
  • 必要に応じて一時ファイルに.gitignoreを使用してください
  • コンテンツ追跡のためにi18n.lockファイルをコミットしてください

プロジェクトの構成

バケットの分離:

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

バケットを分離することで、異なるコンテンツ領域の対象を絞った処理が可能になります。

ファイル構造:

project/
  src/locales/           # Application content
  marketing/             # Marketing content
  docs/                  # Documentation
  i18n.json             # Configuration
  i18n.lock             # Content tracking

整理された構造により、大規模プロジェクトが管理しやすくなり、選択的な処理が可能になります。

スケーリング戦略

段階的処理:

  • ロックファイルを使用して変更されたコンテンツのみを処理
  • 特定の言語またはバケットを必要に応じて更新
  • CI/CDと組み合わせて自動段階的更新を実現

チームワークフロー:

  • ブランチベースの翻訳を使用してコラボレーション
  • コンテンツ変更と翻訳作業を分離
  • 本番環境へのマージ前に翻訳をレビュー

リソース最適化:

  • システム能力に基づいて同時実行数を調整
  • 重い処理ワークロードにはクラウドランナーを使用
  • 処理時間を監視し、バケット構成を最適化