仕組み
Lingo.dev CLIは、複雑なローカリゼーション処理ワークフローをエレガントなコマンドラインインターフェースの背後にカプセル化しています。
npx lingo.dev@latest i18n
を実行すると、CLIは標準のi18n.json
設定ファイルを読み込み、以下の5つのステップを実行します:
1. コンテンツ探索
Lingo.dev CLIはプロジェクトを真実の源として扱います。バケット設定に基づいて翻訳ソースファイルとターゲットファイルをプロジェクト内で再帰的にスキャンし、処理のためにメモリに読み込みます。
探索フェーズでは以下を考慮します:
locales/[locale].json
のような包含パターン- スキップしたいファイルの除外パターン
- 異なるファイルタイプに対する複数のバケット設定
2. データクリーニング
すべてのコンテンツが翻訳を必要とするわけではありません。本番アプリケーションには、通常言語間で変更されない数値、ブール値、日付、UUID、コードスニペットが含まれています。
Lingo.dev CLIは以下を知的にフィルタリングします:
42
や3.14
などの数値- ブール値(
true
/false
) - ISO日付とタイムスタンプ
- UUIDおよび類似の識別子
- コードブロックと技術的スニペット
このフィルタリングにより、LLM推論コストを削減し、翻訳可能なコンテンツのみに焦点を当てることで処理速度を向上させます。
3. 差分計算
変更されていないコンテンツは再翻訳する必要はありません。Lingo.dev CLIは洗練されたバージョン管理システムを実装しており、以下のことを行います:
- SHA-256ハッシュを使用してコンテンツのフィンガープリントを作成
- 現在のコンテンツを
i18n.lock
に保存された以前の状態と比較 - 新規、変更、削除された翻訳キーを識別
- 翻訳エンジンに差分のみを送信
この増分アプローチにより、実行ごとにコンテンツライブラリ全体ではなく、新規または変更された部分に対してのみ料金が発生します。
詳細はこちら:i18n.lockロックファイル
4. ローカリゼーション
ローカリゼーションは、インターネット接続が不安定な場合やLLMプロバイダーの停止時でも信頼性が必要です。このステップでは、Lingo.dev CLIが差分を取得し、設定された翻訳バックエンドに送信します。
CLIは以下を実装しています:
- ネットワーク障害に対する指数バックオフリトライ戦略
- 自動エラー回復と部分的な進捗保存
- 生のLLM API(OpenAI、Anthropic)とLingo.devエンジンの両方のサポート
- 複数のターゲット言語の同時処理
各翻訳リクエストには、プロジェクト全体での一貫性と品質を確保するためのコンテキスト情報が含まれています。
5. コンテンツ注入
クリーンでレビュー可能な変更セットを維持するために、Lingo.dev CLIはソースコンテンツが存在する正確な位置に翻訳を注入します。このアプローチは:
- ファイル構造とフォーマットを保持
- 不要なgitコンフリクトを回避
- 最小限の焦点を絞った差分を作成
- 存在する場合、既存のPrettier設定を尊重
結果として、手作業で作成されたかのように見えるローカライズされたファイルが、コードレビューとデプロイメントの準備ができた状態で生成されます。
完全なワークフロー
これら5つのステップは通常、2種類の変更を生み出します:
- ローカリゼーションファイル — 新規および変更された翻訳で更新
- i18n.lockファイル — 状態追跡用のコンテンツフィンガープリントで更新
どちらも手動またはCI/CD統合を通じて自動的にリポジトリにコミットする必要があります。
このアーキテクチャにより、Lingo.dev CLIは単一の開発者が数個の文字列を翻訳する場合から、チームが数十の言語にわたって何百万もの単語を管理する場合まで、効率的にスケールすることが保証されます。
次のステップ
Lingo.dev CLIの内部動作を理解したところで、次のことができます: