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

継続的ローカライゼーション

  • 仕組み
  • セットアップ

プラットフォーム

  • GitHub App
  • GitHub Actions
  • GitLab CI/CD
  • Bitbucket Pipelines
  • 高度なパターン

高度なパターン

CI/CDローカライズにおける高度なパターン — ワークフローの選定、翻訳の完全性チェック、マージ競合の解消。

ワークフローの選び方#

4つのワークフローパターンで、ほとんどのチーム構成をカバーできます。それぞれ、自動化、レビュー負荷、ブランチ運用のしやすさの面で異なるトレードオフがあります。

ワークフロー最適なケーストレードオフ
main にコミット小規模チーム、手間なく更新したい場合翻訳のレビュー工程がない
main から PR翻訳をレビューしたいチーム手動でのPR承認が必要
feature ブランチにコミット長期間運用する feature ブランチブランチ履歴に翻訳コミットが残る
feature ブランチから PR機能単位で最大限コントロールしたい場合機能ごとに複数のPRを管理する必要がある

迷ったら、まずは "main にコミット" から始めるのがおすすめです。もっともシンプルなワークフローで、ブランチの分岐が発生しないため、マージ競合を完全に防げます。

翻訳の完全性チェック#

--frozen フラグを使うと、新しい翻訳を生成せずに、すべてのコンテンツが翻訳済みかどうかを検証できます。未翻訳のコンテンツがある場合は、非ゼロのステータスコードで終了します。

bash
npx lingo.dev@latest run --frozen

未翻訳コンテンツのリリースを防ぐデプロイゲートとして活用しましょう。

yaml
name: Check translations
on: [push, pull_request]
jobs:
  check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
      - run: npx lingo.dev@latest run --frozen

マージ競合の解消#

マージ競合は、ブランチ間で i18n.lock ファイルの内容がずれたときに発生します。多くの場合、別々のブランチで翻訳が独立して更新されたことが原因です。

予防策#

翻訳用に feature ブランチを使うのではなく、翻訳を直接 main にコミットすれば、lockfile の競合を完全に回避できます。

マージで解消する#

1

マージを開始する

bash
git merge <branch-name>
2

競合している lockfile を削除する

bash
rm i18n.lock
3

マージを完了する

bash
git add .
git merge --continue
4

lockfile を再生成する

bash
npx lingo.dev@latest lockfile --force

これにより、新しい翻訳を発生させることなく、現在のソースファイルの状態から lockfile を再構築できます。

rebase で解消する#

同じ方法は rebase でも有効です。競合が発生するたびに i18n.lock を削除し、rebase を続行して、最後に lockfile を再生成します。

bash
git rebase <branch-name>
# On each conflict: rm i18n.lock && git add . && git rebase --continue
npx lingo.dev@latest lockfile --force

次のステップ#

GitHub Actions
公式の GitHub Action をセットアップする
i18n.lock
lockfile が翻訳状態を追跡する仕組み
仕組み
CI/CDローカライズパイプライン
セットアップ
プロジェクト向けに CI/CD を設定する

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

Max PrilutskiyMax Prilutskiy·更新済み 4か月前·1分で読めます