翻訳

GitHub Actionsで翻訳をチェックする

{name}を削除したり、キーをスキップしたりする翻訳は、実行時にアプリを破損させ、レビューで検出されることはほとんどありません。このワークフローは、すべてのプルリクエストでkaeris checkを実行し、ジョブを赤くします。オフラインで無料です:APIキー不要、アカウント不要。

KAERISはこのページを翻訳し、すべての行を逆翻訳して確認しました。ネイティブスピーカーによるレビューはまだ行われていません。 英語原文

レシピ

ワークフロー

.github/workflows/i18n-check.ymlとして保存します。sourceをベース言語ファイルに、languagesを配布するロケールに変更してください。

設定.github/workflows/i18n-check.yml
name: i18n check
on: pull_request
jobs:
  check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: kaeris-io/kaeris-action@v1
        with:
          mode: check
          source: locales/en.json
          languages: de,fr

Python なし: npx

npm パッケージ kaeris は Node 18 以降で同じチェックを実行します。npx が自動で取得するので、インストール手順は不要です。中身は check のみで、翻訳には Python パッケージが必要です。

設定.github/workflows/i18n-check.yml (steps)
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
      - run: npx kaeris check --source locales/en.json --langs de,fr

Actionなしの場合と同じ

Pythonとpipを使ったプレーンな手順。ログには、Actionが出力するテーブルではなく、検出された問題が1行ずつ表示されます。

設定.github/workflows/i18n-check.yml (steps)
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.12"
      - run: pip install kaeris
      - run: kaeris check --source locales/en.json --langs de,fr --ci

プルリクエストの正確な行での検出(オプション)

ActionはSARIFレポートも書き出すことができます。それをアップロードすると、各検出結果が差分に注釈として表示されます。コードスキャンアップロードは公開リポジトリでは無料ですが、プライベートリポジトリではGitHub Advanced Securityが必要です。

設定.github/workflows/i18n-check.yml
name: i18n check
on: pull_request
permissions:
  contents: read
  security-events: write
jobs:
  check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: kaeris-io/kaeris-action@v1
        with:
          mode: check
          source: locales/en.json
          languages: de,fr
          sarif-file: kaeris.sarif
      - uses: github/codeql-action/upload-sarif@v3
        if: always()
        with:
          sarif_file: kaeris.sarif

実際の実行時に表示される内容

KAERIS 0.2.35 の出力、2026年10月27日取得。各ボックスの最後の行は、CIジョブが認識する終了コードです。

ジョブが出力する内容

Actionは言語ごとにサマリーテーブルを表示し、問題が発生した場合はエラー行で終了します。左:問題のないファイル。右:de.json で {name} の代わりに {nam} が使われ、checkout キーが欠落しています。

問題のないファイルAction step output
## KAERIS i18n — CI check

Placeholder-loss: **0** (should be 0).

| Language | Status | Missing | Placeholder issues | Translated |
|---|---|---|---|---|
| de | ✓ complete | 0 | 0 | – |
| fr | ✓ complete | 0 | 0 | – |

_Generated from `kaeris check --json` — no fabricated numbers._
step exit=0
--- GITHUB_OUTPUT (without summary body):
missing=0
placeholder-issues=0
changed=false
check-exit-code=0
translate-exit-code=0
壊れた翻訳Action step output
## KAERIS i18n — CI check

Placeholder-loss: **1** (should be 0).
Missing keys remaining: **1**.

| Language | Status | Missing | Placeholder issues | Translated |
|---|---|---|---|---|
| de | ⚠ 1 missing, 1 placeholder issue | 1 | 1 | – |
| fr | ✓ complete | 0 | 0 | – |

_Generated from `kaeris check --json` — no fabricated numbers._
::error::kaeris check found incomplete/broken translations — see the job summary for the language matrix
step exit=1
--- GITHUB_OUTPUT (without summary body):
missing=1
placeholder-issues=1
changed=false
check-exit-code=1
translate-exit-code=0

npx ステップの出力

同じプロジェクトを npx でチェック:npm の kaeris 0.2.37、空の npm キャッシュ、CI=true。新しいランナーと同じ条件です。最初の行は npm によるパッケージのインストールです。

問題のないファイルnpx step output
$ npx kaeris check --source locales/en.json --langs de,fr
npm warn exec The following package was not found and will be installed: [email protected]
✓ de: complete & placeholder-safe
✓ fr: complete & placeholder-safe
✓ all locales complete & placeholder-safe
exit code: 0
壊れた翻訳npx step output
$ npx kaeris check --source locales/en.json --langs de,fr
npm warn exec The following package was not found and will be installed: [email protected]
✗ de: 1 missing key(s): checkout
✗ de: 1 placeholder mismatch(es):
    greeting: missing ['{name}'], added ['{nam}']
✗ de: 2 translation fault(s):
    greeting: lost placeholder {name}
    greeting: invented placeholder {nam} (not in source)
✓ fr: complete & placeholder-safe
✗ 1 missing key, 1 placeholder mismatch, 2 translation faults
exit code: 1

3つのステップで設定します

  1. ワークフローを保存

    .github/workflows/i18n-check.yml を、上記のワークフローで、ご自身の source と languages を設定して作成します。

  2. プルリクエストを開く

    ロケールファイルを変更するブランチをプッシュします。ジョブはすべてのプルリクエストで実行され、プレースホルダーの欠落やキーの欠落で赤くなります。

  3. チェックを必須にする

    リポジトリ設定で、ブランチ保護の必須ステータスチェックにジョブを追加します。赤くなったジョブはマージをブロックします。

どのようにチェックしたか

このページにあるすべてのコマンドは、ここに書かれる前に実行されました。実行されなかったものもリストされています。

知っておくと便利なオプション

よくある質問

APIキーやアカウントは必要ですか?

いいえ。kaeris check はそのヘルプで静的、ローカル、API不要と説明されているため、ジョブにシークレットは不要です。翻訳は別のコマンドであり、キーが必要です。

どのファイル形式を読み込めますか?

kaeris check のヘルプには、ソース形式としてJSON、ARB、YAML、.strings、.xcstrings、.po、Android XML、CSV、XLIFF、.properties、.resx、Fluent、Markdownがリストされています(kaeris 0.2.35以降)。形式別のガイド

ジョブが失敗する原因は何ですか?

kaeris check の終了コードです:0はクリーン、1は問題が見つかった、2は不正な使用または読み込めないファイル。チェックが赤と判定した問題はジョブを失敗させます。strict を設定すると、古いキーも失敗の原因になります。GitHub Actionリファレンス

続ける

その他のレシピ:GitLab CI · pre-commit · Makeとnpmスクリプト

CLIリファレンス · Checkリファレンス · GitHub Actionリファレンス · ブラウザでの無料チェック · ブラウザでの翻訳