大規模プロジェクト

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 Engineは自動的にレート制限を処理します

ファイルシステム:

  • 大規模プロジェクトは多くの翻訳ファイルを生成します
  • 必要に応じて一時ファイルに.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と組み合わせて自動増分更新を実現

チームワークフロー:

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

リソース最適化:

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