Controlla le traduzioni in GitHub Actions
Una traduzione che perde {name} o salta una chiave rompe l'app a runtime, e la revisione raramente la individua. Questo workflow esegue kaeris check su ogni pull request e rende il job rosso. È offline e gratuito: nessuna chiave API, nessun account.
KAERIS ha tradotto questa pagina e controllato ogni riga ritraducendola. Un madrelingua non l'ha ancora revisionata. Originale in inglese
La ricetta
Il workflow
Salvalo come .github/workflows/i18n-check.yml. Cambia source con il tuo file della lingua base e languages con le localizzazioni che distribuisci.
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
Senza Python: npx
Il pacchetto npm kaeris esegue lo stesso controllo con Node 18 o successivo; npx lo scarica da solo, senza passo di installazione. Contiene solo check: per tradurre serve il pacchetto Python.
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
Lo stesso senza l'Action
Passaggi semplici con Python e pip. Il log mostra quindi ogni riscontro riga per riga invece della tabella stampata dall'Action.
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
Riscontri sulla riga esatta della pull request (opzionale)
L'Action può anche scrivere un report SARIF; caricarlo trasforma ogni riscontro in un'annotazione nel diff. I caricamenti di code-scanning sono gratuiti sui repository pubblici; quelli privati richiedono GitHub Advanced Security.
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
Cosa stampa, nelle esecuzioni reali
Output di kaeris 0.2.35, catturato il 27 ottobre 2026. L'ultima riga di ogni box è il codice di uscita che il job CI vede.
Cosa stampa il job
L'Action stampa una tabella riassuntiva per lingua e termina con la riga di errore quando qualcosa non va. A sinistra: file che vanno bene. A destra: de.json con {nam} invece di {name} e la chiave checkout mancante.
## 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
## 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
Cosa stampa il passo con npx
Lo stesso progetto controllato con npx: kaeris 0.2.37 da npm, cache npm vuota e CI=true, come su un runner nuovo. Nella prima riga npm installa il pacchetto.
$ 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 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
Configuralo in tre passaggi
Salva il workflow
Crea
.github/workflows/i18n-check.ymlcon il workflow sopra, con il tuosourcee i tuoilanguages.Apri una pull request
Esegui il push di un branch che modifica un file di localizzazione. Il job viene eseguito su ogni pull request e diventa rosso in caso di placeholder perso o chiave mancante.
Rendi il controllo obbligatorio
Nelle impostazioni del repository, aggiungi il job come controllo di stato obbligatorio nella protezione del branch. Un job rosso blocca quindi il merge.
Come abbiamo verificato questo
Ogni comando in questa pagina è stato eseguito prima di essere scritto qui. Quello che non è stato eseguito è elencato anch'esso.
Cosa è stato eseguito
Lo script di passaggio di
kaeris-io/kaeris-actional tagv1, copiato da GitHub il 27 ottobre 2026 ed eseguito in bash su un progetto di test, con la CLI installata da PyPI (kaeris 0.2.35). File puliti: codice di uscita 0. Ilde.jsonerrato: codice di uscita 1 e la riga di errore mostrata sopra.npx
npx kaeris checkdal pacchetto npm kaeris 0.2.37 è stato eseguito il 28 ottobre 2026 sullo stesso progetto di test, con cache npm vuota,CI=truee senza--yes. File corretti: codice di uscita 0. Ilde.jsonrotto: codice di uscita 1.SARIF
Il flag
--sarifè stato eseguito sul progetto errato e ha scritto un report con 4 risultati; sui file puliti ha scritto un report con 0. Il caricamento su GitHub non è stato tentato.Cosa non è stato eseguito
Il file del workflow non è stato eseguito su un runner GitHub, e nemmeno
actions/checkout,actions/setup-python,actions/setup-nodeeupload-sarif. La sintassi dei workflow qui sopra non è stata controllata da GitHub.Quale CLI installa l'Action
L'Action esegue
pip install "kaeris>=0.2.12", quindi un job preleva l'ultima release disponibile in quel momento. Se hai bisogno di una versione fissa, usa la variante plain-steps e fissala:pip install kaeris==0.2.35.
Opzioni degne di nota
Fallisce anche per chiavi obsolete
Imposta
strict: truesull'Action (o--strictnella variante plain).Traduzioni in un'altra cartella
Imposta
out: path/to/translationssull'Action; per impostazione predefinita utilizza la cartella del file sorgente.Mantieni i nomi dei brand così come sono scritti
--glossary 'KAERIS,GitHub'fa fallire un target che ha omesso uno dei termini. Lo stesso elenco può risiedere sottokeepinkaeris.json.Layout file diverso
--outè la cartella con le traduzioni e--pattern '{lang}/common.json'i loro nomi file. Predefinito: il layout chekaeris translatescrive.
Domande
Richiede una chiave API o un account?
No. kaeris check è descritto nel suo stesso aiuto come statico, locale e senza API, quindi il job non necessita di secret. La traduzione è un comando separato che richiede una chiave.
Quali formati di file legge?
L'aiuto di kaeris check elenca JSON, ARB, YAML, .strings, .xcstrings, .po, Android XML, CSV, XLIFF, .properties, .resx, Fluent e Markdown come formati sorgente (kaeris 0.2.35 e successivi). Guide per formato
Cosa fa fallire il job?
Il codice di uscita di kaeris check: 0 pulito, 1 è stato trovato un problema, 2 uso errato o un file che non può leggere. Un problema che il controllo definisce rosso fa fallire il job; strict fa fallire anche le chiavi obsolete. Riferimento GitHub Action
Continua
Altre ricette: GitLab CI · pre-commit · Script Make e npm
Riferimento CLI · Riferimento Check · Riferimento GitHub Action · Controllo gratuito nel browser · Traduci nel browser