Lingo.dev は翻訳をコードと常に同期された状態に保ちます。変更のたびに、どのコンテンツが変わったかを検出し、接続済みのローカライゼーションエンジンで翻訳します。用語集ルール、ブランドボイス、ロケールごとのモデル設定も一貫して適用され、結果はコミットされるか、プルリクエストとして作成されます。未完了の翻訳が本番環境に入り込むことはありません。
連携方法を選ぶ#
各連携にはそれぞれ専用ガイドがあります。セットアップに合うものを選んでください。
| 連携 | 実行方法 |
|---|---|
| GitHub App | 一度インストールするだけ。Lingo.dev がデフォルトブランチへの push 時にローカリゼーションを実行し、有効化すればプルリクエストでも動作します。runner も API キーのシークレットも lockfile も不要です。 |
| GitHub Actions | 公式 Action を使って、GitHub Actions のパイプライン内で CLI を実行します。 |
| GitLab CI/CD | 公式 Docker イメージを使って、GitLab パイプライン内で CLI を実行します。 |
| Bitbucket Pipelines | 公式 Pipe を使って、Bitbucket パイプライン内で CLI を実行します。 |
GitHub App を除くすべての連携では Lingo.dev CLI を実行します。つまり、Node.js が動く CI/CD 環境であれば、ファーストパーティ連携がなくてもローカリゼーションを直接実行できます。
GitHub App の仕組み#
アプリを一度インストールし、リポジトリに .lingo/config.json を追加すれば準備完了です。あとは Lingo.dev がローカリゼーションを自動で実行します。パイプラインも API キーのシークレットも lockfile も不要です。
- 変更を監視 - 標準でデフォルトブランチへの push に反応し、
onPullRequestを有効にするとプルリクエストにも反応して、設定したソースパターンに照らして変更ファイルを確認します - 差分だけを翻訳 - 変更されたソースコンテンツを
engineIdで指定したエンジンに送って翻訳します - 結果を GitHub に書き戻す - デフォルトブランチへの push では翻訳用プルリクエストを作成または更新し、プルリクエストでは翻訳済みファイルを PR ブランチにコミットしてステータスコメントを投稿します
- 取りこぼしを補完して分割処理 - 以前の実行で見逃した変更を検出し、非常に大きな更新は複数のコミットに分けて処理します
承認ステップの後に実行するようにしたり、プルリクエスト内で /lingo コマンドを使って手動で翻訳をトリガーしたりできます。設定の詳細は GitHub App ガイド をご覧ください。
パイプライン連携の仕組み#
GitHub Action、GitLab CI/CD、Bitbucket Pipelines、そしてスタンドアロンの CLI は、いずれも既存のパイプラインのステップとして同じ Lingo.dev CLI を実行します。必要なのは 2 つ、i18n.json の設定と API キーです。
各実行で、連携は次の処理を行います。
- ソースファイルを見つける - bucket configuration を読み取り、翻訳対象のコンテンツを特定します
- 変更を検出 -
i18n.locklockfile と比較して新規または変更された文字列を特定し、差分だけを翻訳します - 翻訳 - 変更されたコンテンツを、用語集、ブランドボイス、ロケールごとのモデル設定など、すべてのルールを適用した設定済みの ローカライゼーションエンジン に送ります
- 結果を書き込む - ターゲットロケールのファイルをその場で更新します
- コミットまたは PR を作成 - 選択したワークフローに応じて処理します
翻訳するのは変更された文字列だけなので、数十ものロケールにまたがる場合でも、実行は高速かつコスト効率に優れています。
ワークフローの選択肢#
GitHub App#
App の動作は .lingo/config.json で設定します。
| オプション | 内容 |
|---|---|
デフォルトブランチへの push(onPushToDefaultBranch) | デフォルトで有効です。デフォルトブランチにソースの変更が入ると、翻訳 PR を作成または更新します。 |
プルリクエスト翻訳(onPullRequest) | デフォルトでは無効です。PR の変更にあわせて、翻訳を PR ブランチにコミットします。 |
承認ゲート(requireApproval) | デフォルトでは無効です。自動実行で翻訳を行う前に、チェック実行での Approve/Deny、または PR 上での /lingo approve が必要です。 |
手動コマンド(/lingo translate) | PR コメントから、いつでも特定ファイルの翻訳を補完したり強制実行したりできます。 |
設定全体とコマンドリファレンスについては、GitHub App ガイドをご覧ください。
GitHub Action、GitLab CI、Bitbucket、CLI#
代表的なチーム構成は、次の 4 つのワークフローパターンでほぼカバーできます。
| ワークフロー | トリガー | 出力 |
|---|---|---|
| main にコミット | main への push | 翻訳を main に直接コミット |
| main から PR 作成 | main への push | 翻訳付きのプルリクエスト |
| feature ブランチにコミット | feature ブランチへの push | 翻訳をそのブランチにコミット |
| feature ブランチから PR 作成 | feature ブランチへの push | そのブランチからのプルリクエスト |
最初の選択肢である main へのコミットが最もシンプルです。開発者の手を介さずに翻訳が自動で反映されます。一方、PR ベースの選択肢では、翻訳が取り込まれる前にレビューのステップを挟めます。
選び方の詳細は Advanced Patterns をご覧ください。
