大規模プロジェクト
Lingo.dev CLIは、数十万の翻訳キー、複数の言語、複雑なコンテンツ構造を持つ大規模ローカリゼーションプロジェクト向けに、パフォーマンス最適化とワークフロー戦略を提供します。
大量のコンテンツを含むプロジェクトでは、CLIは並列処理とCI/CD統合を提供し、大規模な翻訳を効率的に処理します。
並列処理
Lingo.dev CLIは、複数の翻訳タスクを同時に処理する並列ワーカーを使用して、大規模プロジェクトをより高速に処理します。
並列処理を有効化:
npx lingo.dev@latest run
これにより、翻訳タスクが複数のワーカーに分散され、大規模プロジェクトの処理時間が大幅に短縮されます。
ワーカーの同時実行数を制御:
npx lingo.dev@latest run --concurrency 16
デフォルトの同時実行数は10ワーカーです。値を大きくすると、より多くのタスクを同時に処理できますが、APIレート制限に達する可能性があります。
並列処理の仕組み
CLIは、ファイルの破損を防ぎながら翻訳タスクを並行処理するワーカープールを作成します:
- タスク分散 — ローカリゼーションをロケールとファイルごとの個別タスクに分割
- ワーカー割り当て — 負荷分散を使用して、利用可能なワーカーにタスクを割り当て
- 競合状態の防止 — ファイルシステムロックを使用して、複数のワーカーが同じファイルにアクセスする際の競合を防止
- 進捗追跡 — すべてのワーカーにわたるリアルタイムの進捗をレポート
大規模プロジェクトの例:
// 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経由での翻訳のトリガー:
- リポジトリのActionsタブに移動
- 「Lingo.dev Localization」ワークフローを選択
- 翻訳ブランチでワークフローを実行
- 翻訳されたコンテンツをレビューしてマージ
このアプローチにより、コンテンツの変更と翻訳処理を明確に分離できます。
パフォーマンスに関する考慮事項
システムリソース:
- 並列処理はより多くの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と組み合わせて自動段階的更新を実現
チームワークフロー:
- ブランチベースの翻訳を使用してコラボレーション
- コンテンツ変更と翻訳作業を分離
- 本番環境へのマージ前に翻訳をレビュー
リソース最適化:
- システム能力に基づいて同時実行数を調整
- 重い処理ワークロードにはクラウドランナーを使用
- 処理時間を監視し、バケット構成を最適化