Traduci

Controlla le traduzioni con pre-commit

Con pre-commit, un commit che tocca un file di localizzazione esegue prima kaeris check e viene rifiutato quando una traduzione ha perso un placeholder o una chiave. È offline e gratuito: nessuna API key, nessun account.

KAERIS ha tradotto questa pagina e controllato ogni riga ritraducendola. Un madrelingua non l'ha ancora revisionata. Originale in inglese

La ricetta

L'hook

Salvalo come .pre-commit-config.yaml nella root del progetto. È un hook locale: pre-commit costruisce il proprio ambiente e installa kaeris da PyPI al suo interno, quindi non è necessario installare altro. files lo limita ai commit che mettono in stage qualcosa sotto locales/.

Configurazione.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

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 un commit

A sinistra: un commit con file corretti. A destra: un commit con de.json che ha {nam} invece di {name} e la chiave checkout mancante; il commit viene rifiutato.

File che vanno benegit 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
Una traduzione erratagit 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

Un commit che non tocca alcun file di localizzazione

L'hook viene saltato, quindi i commit non correlati rimangono veloci.

Niente da controllaregit 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

Configuralo in tre passaggi

  1. Aggiungi l'hook

    Salva la configurazione sopra come .pre-commit-config.yaml e imposta i tuoi --source e --langs. Mantieni il pin della versione e aumentalo quando aggiorni.

  2. Installa l'hook git

    Esegui pip install pre-commit e poi pre-commit install una volta per clone.

  3. Esegui il commit come al solito

    Un commit che aggiunge un file sotto locales/ esegue il controllo e viene rifiutato quando fallisce. pre-commit run --all-files esegue lo stesso controllo su richiesta, ad esempio in CI.

Come abbiamo verificato questo

Ogni comando in questa pagina è stato eseguito prima di essere scritto qui. Quello che non è stato eseguito è elencato anch'esso.

Opzioni degne di nota

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

Rallenta ogni commit?

Solo i commit che aggiungono un file corrispondente a files. La prima esecuzione crea l'ambiente dell'hook, che necessita di rete; le esecuzioni successive lo riutilizzano. Non l'abbiamo misurato, quindi nessun dato qui.

Continua

Altre ricette: GitHub Actions · GitLab CI · Script Make e npm

Riferimento CLI · Riferimento Check · Riferimento GitHub Action · Controllo gratuito nel browser · Traduci nel browser