Controlla le traduzioni in GitLab CI
Il job installa il pacchetto kaeris ed esegue kaeris check sulle merge request che modificano i tuoi file di localizzazione. Un placeholder perso o una chiave mancante fanno fallire la pipeline. È 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 job
Aggiungilo a .gitlab-ci.yml. Modifica --source con il tuo file della lingua base e --langs con le localizzazioni che distribuisci. Il blocco rules esegue il job solo sulle merge request che modificano qualcosa sotto locales/; rimuovi le righe changes per eseguirlo su ogni merge request.
i18n-check:
stage: test
image: python:3.12-slim
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
changes:
- locales/**/*
script:
- pip install kaeris
- kaeris check --source locales/en.json --langs de,fr --ci
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
Le due righe script, eseguite in ordine. A sinistra: file che vanno bene. A destra: de.json con {nam} invece di {name} e la chiave checkout mancante; il job si interrompe con codice di uscita 1.
$ pip install kaeris Collecting kaeris Using cached kaeris-0.2.35-py3-none-any.whl.metadata (26 kB) Using cached kaeris-0.2.35-py3-none-any.whl (131 kB) Installing collected packages: kaeris Successfully installed kaeris-0.2.35 $ kaeris check --source locales/en.json --langs de,fr --ci ✓ de: complete & placeholder-safe ✓ fr: complete & placeholder-safe ✓ all locales complete & placeholder-safe Job succeeded exit code: 0
$ pip install kaeris
Requirement already satisfied: kaeris in C:\Users\Inzagi\AppData\Local\Temp\claude\C--Users-Inzagi-projects-kaeris\bfeebe69-3cfd-4f28-bbe7-e5600be082b9\scratchpad\venv-gl2\Lib\site-packages (0.2.35)
$ kaeris check --source locales/en.json --langs de,fr --ci
✗ 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
ERROR: Job failed: exit code 1
exit code: 1
Configuralo in tre passaggi
Aggiungi il job
Incolla il job in
.gitlab-ci.ymle imposta i tuoi--sourcee--langs.Apri una merge request
Modifica un file di localizzazione su un branch e apri una merge request. Il job viene eseguito e mostra tutti i risultati nel suo log.
Richiedi la pipeline
Nelle impostazioni del progetto, sotto le merge request, attiva l'opzione che le pipeline devono avere successo. Un job rosso bloccherà quindi la 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
Entrambe le righe
script, prese dallo YAML analizzato ed eseguite una dopo l'altra in un ambiente virtuale Python pulito, fermandosi alla prima riga fallita come fa un job GitLab.pip install kaerisha scaricato kaeris 0.2.35 da PyPI. File puliti: codice di uscita 0. Ilde.jsonrotto: codice di uscita 1.Cosa non è stato eseguito
Nessun runner GitLab né immagine Docker sono stati utilizzati (il log sopra proviene da un PC Windows con Python 3.14, non da
python:3.12-slim). Il bloccorulesechangesè stato solo analizzato come YAML; GitLab non lo ha valutato. Il pacchetto dichiara Python 3.8 o versioni successive.
Opzioni degne di nota
Fallisce anche per chiavi obsolete
--strictfallisce anche quando una traduzione ha chiavi che la sorgente non ha più.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.Nessun flag
Con un file
kaeris.jsonnel progetto (scritto dakaeris init),kaeris checkprende sorgente, lingue e cartella da esso.
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.
Cosa rileva il controllo?
Un placeholder perso o inventato ({name}, %s, {{x}}, plurali ICU), una chiave mancante e un file di localizzazione inesistente. Il confronto è locale e statico. Cosa controlla, con ogni flag
Posso salvare il risultato come file?
Sì: --json stampa il risultato come JSON e --sarif PATH scrive un report SARIF. Aggiungi il file sotto artifacts se vuoi conservarlo. Entrambi i flag sono nell'help di kaeris check; non abbiamo eseguito un caricamento di artefatti su GitLab.
Continua
Altre ricette: GitHub Actions · pre-commit · Make e script npm
Riferimento CLI · Riferimento Check · Riferimento GitHub Action · Controllo gratuito nel browser · Traduci nel browser