|
ドキュメント
デモを予約プラットフォーム
プラットフォームMCPCLIAPIワークフロー
ガイド
変更履歴

ローカライゼーション

  • 概要
  • 翻訳API
  • Webアプリのローカライゼーション
  • モバイルアプリのローカライズ
  • Android with strings.xml
  • メールのローカライズ
  • 静的コンテンツ(例: .md、.json)
  • Next.js with Markdoc
  • Rails with i18n

ローカライズ

  • String Catalogを使ったiOS

ワークフロー

  • MCP でエンジンを設定
  • Jiraトリアージ
  • CI/CD

CI/CDローカライゼーションワークフロー

Lingo.dev のCLIは、Node.js が動くあらゆる CI/CD 環境で実行できます。パイプラインのステップに追加すれば、push のたびに翻訳を自動実行。lockfileによって変更された文字列だけが処理されるため、プロジェクトが大きくなっても高速かつコスト効率の高い翻訳を維持できます。

GitHub をお使いですか?実行方法は 2 つあります

GitHub なら、GitHub Appがいちばん簡単です。一度インストールすれば、push や pull request に自動で反応します。runner も API キーの secret も lockfile も不要で、.lingo/config.jsonとengineIdでリポジトリを設定できます。

GitHub Action とそのほかの以下の連携では、i18n.json、i18n.lock lockfile、LINGODOTDEV_API_KEY secret を使って、自分たちのパイプライン内で CLI を実行します。翻訳をほかの CI ステップと一緒に動かしたい場合や、GitHub 以外を使っている場合はこちらが適しています。

このガイドでは、ここから GitHub Action と CLI について説明します。

仕組み#

CI/CD パイプラインでは、checkout の後のステップとして CLI を実行します。CLI はi18n.json設定を読み込み、ソースファイルを lockfile と比較して変更を特定し、設定されたローカライゼーションエンジンを通じて差分だけを翻訳し、結果を対象ロケールのファイルに書き込みます。その後はワークフローの設定に応じて、パイプラインが翻訳済みファイルを commit するか、pull request を作成します。

ワークフローを選ぶ#

ほとんどのチームは、次の 4 つのワークフローパターンでカバーできます。まずは最もシンプルなものから始めて、チームの成長に合わせて発展させていきましょう。

ワークフロー仕組み最適なケーストレードオフ
main に commit翻訳して main に直接 commit小規模チーム、摩擦ゼロ翻訳のレビュー工程がない
main から PR翻訳してレビュー用の PR を作成翻訳をレビューするチームPR の手動承認が必要
feature branch に commitfeature branch への push 時に翻訳長期間運用する feature branchbranch の履歴に翻訳の commit が残る
feature branch から PR翻訳して feature branch から PR を作成機能ごとに最大限コントロールしたい場合機能ごとに複数の PR が発生

最初のおすすめ

ほとんどのチームには、main に commit する運用がよく合います。翻訳は push のたびに反映され、lockfile が一貫性を保ち、ローカライゼーションエンジンの glossary とブランドボイスのルールが品質を支えます。翻訳に人のレビューが必要になったら、PR ベースのワークフローに移行しましょう。

クイックセットアップ#

Lingo.dev の API キーを CI/CD の secret として保存し、パイプラインに翻訳ステップを追加してください。

Lingo.dev は、checkout、翻訳、commit / PR 作成までをまとめて処理する公式 GitHub Actionを提供しています。

ワークフローファイルや API キーの secret、lockfile を管理したくないなら、GitHub Appがおすすめです。そうした設定なしで GitHub 上の継続的なローカライズを実現でき、一度インストールして.lingo/config.jsonを設定するだけで使えます。

main に commit:

yaml
name: Translate
on:
  push:
    branches: [main]
permissions:
  contents: write
jobs:
  translate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: lingodotdev/lingo.dev@main
        with:
          api-key: ${{ secrets.LINGODOTDEV_API_KEY }}

main から PR - pull-request: trueとGH_TOKENを追加してください:

yaml
name: Translate
on:
  push:
    branches: [main]
permissions:
  contents: write
  pull-requests: write
jobs:
  translate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: lingodotdev/lingo.dev@main
        with:
          api-key: ${{ secrets.LINGODOTDEV_API_KEY }}
          pull-request: true
        env:
          GH_TOKEN: ${{ github.token }}

feature branch ワークフロー、カスタム commit メッセージ、monorepo サポート、GPG 署名については、完全版のGitHub Actions 連携ガイドをご覧ください。

翻訳の検証#

--frozenフラグと lockfile は、GitHub Action と CLI に含まれます。GitHub Appは翻訳状態をサーバー側で追跡するため、lockfile も --frozen に相当するものもありません。

--frozenフラグをデプロイゲートとして使えば、未翻訳のコンテンツが本番環境に出るのを防げます。翻訳が必要な文字列が 1 つでもある場合、CLI は非ゼロステータスで終了します。

bash
npx lingo.dev@latest run --frozen

デプロイ前に実行する別のパイプラインステップとして、これを追加してください:

yaml
- name: Verify translations
  run: npx lingo.dev@latest run --frozen

monorepo ワークフロー#

それぞれ独自の翻訳ファイルを持つ複数パッケージの monorepo では、特定のパッケージを対象にするためにworking-directoryオプションを使います:

yaml
- uses: lingodotdev/lingo.dev@main
  with:
    api-key: ${{ secrets.LINGODOTDEV_API_KEY }}
    working-directory: apps/web

マージコンフリクト#

これは GitHub Action と CLI に当てはまります。GitHub Appは lockfile を使わないため、解決すべきi18n.lockコンフリクトは発生しません。

翻訳変更を含む branch 同士をマージすると、lockfile(i18n.lock)で競合が起きることがあります。対処はシンプルで、競合した lockfile を削除し、マージを完了してから再生成します:

bash
git merge feature-branch
rm i18n.lock
git add .
git merge --continue
npx lingo.dev@latest lockfile --force

lockfile --forceコマンドは、新しい翻訳を発生させることなく、現在のソースファイルの状態から lockfile を再構築します。rebase ベースの解決方法や競合を防ぐための戦略については、高度な連携パターンガイドをご覧ください。

次のステップ#

GitHub App
GitHub 上での管理型・継続的ローカライズ - runner、secret、lockfile は不要
GitHub Actions
GPG 署名やカスタム設定を含む GitHub Actions の完全セットアップ
GitLab CI
アクセストークンや merge request を含む GitLab CI/CD の完全セットアップ
Bitbucket Pipelines
pipe や pull request を含む Bitbucket Pipelines の完全セットアップ
高度なパターン
ワークフローの選び方、競合の解決、デプロイゲート

このページは役に立ちましたか?

Max PrilutskiyMax Prilutskiy·更新済み 29日前·3分で読めます