リリース前に翻訳をチェック
マシン上で実行し、キー不要かつ何も送信しません。{name} のような失われた変数、変更された数値、欠落キー、空行を検出します。エラーがあればコード1で終了するため、CIがマージを停止できます。空行は警告で、コード1になるのは --strict を付けたときだけです。
npx kaeris check --source en.json --langs de
Python は不要です。npx が Node 18 以降で npm パッケージを実行します。Python なら pip install kaeris で同じ kaeris check が使えます。
{
"greeting": "Hallo!",
"delete": "50 Dateien löschen",
"save": "",
"terms": "Lies unsere <b>AGB</b>"
}
✗ de: 1 placeholder mismatch(es): greeting: missing ['{name}'], added - ✗ de: 3 translation fault(s): greeting: lost placeholder {name} delete: number 50 appears in the translation but not the source delete: number 5 from the source is missing or changed in the translation ! de: 1 warning(s): save: empty translation — the source has text ✗ 1 placeholder mismatch, 3 translation faults
ソース: {"greeting": "Hello, {name}!", "delete": "Delete 5 files", "save": "Save changes", …}
| フラグ | 意味 |
|---|---|
--strict | 警告(空の翻訳など)と、ソースにない余分なキーも失敗として扱います。 |
--pattern '{lang}/common.json' | 翻訳ファイルの場所。デフォルトは translate が書き出す場所(ソースの隣)で、de.json, app_de.arb, values-de/strings.xml など。 |
--json | レポートの代わりに機械判読可能な結果を出力。 |
--sarif kaeris.sarif | GitHub用のSARIF 2.1.0レポートも作成します。詳細は下記参照。 |
ソースファイル: 13 形式のいずれか(JSON, YAML, .strings, .xcstrings, Markdown/MDX, .po, ARB, Android XML, CSV, XLIFF, .properties, .resx, Fluent)。終了コード: 0 クリーン、1 問題あり、2 誤った使用法または読み込み不可ファイル。
形式別ガイド: JSON · YAML · PO · XLIFF · ARB · .strings · .xcstrings · Fluent · .properties · .resx · CSV · Markdown · Android XML
CI recipes (in English): GitHub Actions · GitLab CI · pre-commit · Make and npm scripts
用語集:用語ごと、言語ごとに一つの訳語
--keep は単語をそのまま残します。用語を翻訳しつつ常に同じ訳にしたい場合は、kaeris.json と同じ場所の kaeris-glossary.json に書きます。translate は決めた訳語をモデルに渡し、check は別の語を使った翻訳を失敗にします。
{"terms": [
{"term": "workspace", "pos": "noun",
"note": "the shared project area, not a desk",
"translations": {"de": "Arbeitsbereich",
"fr": "espace de travail",
"ru": "рабочее пространство"}},
{"term": "KAERIS", "keep": true}
]}
→ Glossary: 1 term(s), 1 kept as is ✗ fr: 1 translation fault(s): open: glossary: "workspace" should be "espace de travail" ! ru: 1 warning(s): leave: glossary: "workspace" should be "рабочее пространство" — not found, not even as an inflected form; check this line ✗ 1 translation fault
ソース: {"open": "Open the workspace", "leave": "Leave the workspace"}。フランス語訳は「bureau」、ロシア語訳は「рабочей области」でした。
用語は単語単位で数えます。Pro は「product」の中には見つかりません。決めた訳語の活用形は合格です。語形が変わる言語や複合語を作る言語(ロシア語、ポーランド語、ドイツ語など)では、見つからなくてもエラーではなく警告です。正しい文法である可能性があるためです。単語のリストで許容する別形を指定できます。無料デモを含むすべてのプランで使えます。
プルリクエストの該当行に検出結果を表示
--sarif を付けると、すべての検出が言語ファイルの正確な行に注釈となり、レビュワーのコメント横に表示されます。
- uses: kaeris-io/kaeris-action@v1
with:
mode: check
source: locales/en.json
languages: de,fr,es
sarif-file: kaeris.sarif
- uses: github/codeql-action/upload-sarif@v3
if: always()
with:
sarif_file: kaeris.sarif
"greeting": "Hallo, {name}!",
- "delete": "5 Dateien löschen",+ "delete": "50 Dateien löschen",KAERIS i18n · delete: number 5 from the source is missing or changed in the translation "save": "Änderungen speichern"
クリーン実行でもレポートは書き込まれます。これは upload-sarif がファイル欠損時に失敗するためです。行上の注釈は公開リポジトリでは無料で、プライベートはGitHub Advanced Securityが必要です。未導入でもチェックは動作し、ジョブは失敗しログにすべての検出が記録されます。
KAERISはこのページを翻訳し、すべての行を逆翻訳して確認しました。ネイティブスピーカーによるレビューはまだ行われていません。 英語原文