翻訳

pre-commitで翻訳をチェックする

pre-commit を使用すると、ロケールファイルに触れるコミットは最初に kaeris check を実行し、翻訳がプレースホルダーまたはキーを失った場合に拒否されます。オフラインで無料です:APIキー不要、アカウント不要。

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

レシピ

フック

プロジェクトのルートに .pre-commit-config.yaml として保存します。ローカルフックです:pre-commitは独自の環境を構築し、PyPIから kaeris をインストールするため、他に何もインストールする必要はありません。files は、locales/ の下にあるものをステージングするコミットに制限します。

設定.pre-commit-config.yaml
repos:
  - repo: local
    hooks:
      - id: kaeris-check
        name: kaeris check (translations)
        entry: kaeris check --source locales/en.json --langs de,fr --ci
        language: python
        additional_dependencies: ["kaeris==0.2.35"]
        files: ^locales/
        pass_filenames: false

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

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

コミットが出力するもの

左:問題のないファイルを持つコミット。右:{name} の代わりに {nam} を持ち、checkout キーが欠落している de.json を持つコミット。コミットは拒否されます。

問題のないファイルgit commit
$ git commit -m "add locales"
kaeris check (translations)..............................................Passed
[main (root-commit) 96c8a87] add locales
 4 files changed, 25 insertions(+)
 create mode 100644 .pre-commit-config.yaml
 create mode 100644 locales/de.json
 create mode 100644 locales/en.json
 create mode 100644 locales/fr.json
exit code: 0
壊れた翻訳git commit
$ git commit -m "break de"
kaeris check (translations)..............................................Failed
- hook id: kaeris-check
- exit code: 1

✗ 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

ロケールファイルに触れないコミット

フックはスキップされるため、無関係なコミットは高速に保たれます。

チェックするものはありませんgit commit
$ git commit -m "readme"   # nothing under locales/ is staged
kaeris check (translations)..........................(no files to check)Skipped
[main e82b41d] readme
 1 file changed, 1 insertion(+)
 create mode 100644 README.md
exit code: 0

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

  1. フックを追加する

    上記のconfigを.pre-commit-config.yamlとして保存し、独自の--sourceと--langsを設定してください。バージョンピンは維持し、アップグレード時に引き上げてください。

  2. gitフックをインストールする

    pip install pre-commitを実行し、その後クローンごとにpre-commit installを実行してください。

  3. 通常通りコミットする

    locales/配下のファイルをステージングするコミットはチェックを実行し、失敗した場合は拒否されます。pre-commit run --all-filesは、例えばCIで、オンデマンドで同じチェックを実行します。

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

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

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

よくある質問

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

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

チェックは何を検出しますか?

失われたまたは発明されたプレースホルダー({name}、%s、{{x}}、ICU複数形)、欠落しているキー、および存在しないロケールファイル。比較はローカルかつ静的です。チェック内容とすべてのフラグ

すべてのコミットを遅くしますか?

filesに一致するファイルをステージングするコミットのみです。最初の実行でフック環境がビルドされ、ネットワークが必要です。それ以降の実行では再利用されます。時間を計測していないため、具体的な数値はありません。

続ける

その他のレシピ: GitHub Actions · GitLab CI · Makeとnpmスクリプト

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