Traduci

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.

Configurazione.github/workflows/i18n-check.yml
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.

Configurazione.github/workflows/i18n-check.yml (steps)
    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.

Configurazione.github/workflows/i18n-check.yml (steps)
    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.

Configurazione.github/workflows/i18n-check.yml
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.

File che vanno beneAction step output
## 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
Una traduzione errataAction step output
## 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.

File che vanno benenpx step output
$ 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
Una traduzione erratanpx step output
$ 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

  1. Salva il workflow

    Crea .github/workflows/i18n-check.yml con il workflow sopra, con il tuo source e i tuoi languages.

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

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

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.

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