Traducir

Comprueba traducciones en GitHub Actions

Una traducción que omite {name} o salta una clave rompe la aplicación en tiempo de ejecución, y la revisión rara vez lo detecta. Este flujo de trabajo ejecuta kaeris check en cada pull request y pone el trabajo en rojo. Es offline y gratuito: sin clave API, sin cuenta.

KAERIS ha traducido esta página y revisado cada línea traduciéndola de vuelta. Un hablante nativo aún no la ha revisado. Original en inglés

La receta

El flujo de trabajo

Guárdalo como .github/workflows/i18n-check.yml. Cambia source a tu archivo de idioma base y languages a las localizaciones que envías.

Configuración.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

Sin Python: npx

El paquete npm kaeris ejecuta la misma revisión con Node 18 o posterior; npx lo descarga solo, sin paso de instalación. Solo incluye check: para traducir hace falta el paquete de Python.

Configuración.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 mismo sin la Action

Pasos sencillos con Python y pip. El registro muestra cada hallazgo línea por línea en lugar de la tabla que imprime la Action.

Configuración.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

Hallazgos en la línea exacta de la pull request (opcional)

La Action también puede escribir un informe SARIF; al cargarlo, cada hallazgo se convierte en una anotación en la diferencia. Las cargas de escaneo de código son gratuitas en repositorios públicos; los privados necesitan GitHub Advanced Security.

Configuración.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

Lo que imprime, en ejecuciones reales

Salida de kaeris 0.2.35, capturada el 27 de octubre de 2026. La última línea de cada cuadro es el código de salida que ve el trabajo de CI.

Lo que imprime el trabajo

La Action imprime una tabla resumen por idioma y termina con la línea de error cuando algo va mal. Izquierda: archivos que están bien. Derecha: de.json con {nam} en lugar de {name} y la clave checkout faltante.

Archivos que están bienAction 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 traducción rotaAction 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

Lo que imprime el paso con npx

El mismo proyecto revisado con npx: kaeris 0.2.37 desde npm, caché de npm vacía y CI=true, como en un runner limpio. La primera línea es npm instalando el paquete.

Archivos que están biennpx 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 traducción rotanpx 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

Configúralo en tres pasos

  1. Guardar el flujo de trabajo

    Crea .github/workflows/i18n-check.yml con el flujo de trabajo anterior, con tu propio source y languages.

  2. Abrir una pull request

    Sube una rama que cambie un archivo de localización. El trabajo se ejecuta en cada pull request y se pone rojo ante un marcador perdido o una clave faltante.

  3. Hacer la verificación obligatoria

    En la configuración del repositorio, añade el trabajo como una verificación de estado obligatoria en la protección de ramas. Un trabajo rojo entonces bloquea la fusión.

Cómo lo comprobamos

Cada comando de esta página se ejecutó antes de ser escrito aquí. Lo que no se ejecutó también se lista.

Opciones que vale la pena conocer

Preguntas

¿Necesita una clave API o una cuenta?

No. kaeris check se describe en su propia ayuda como estático, local y sin API, por lo que el trabajo no necesita ningún secreto. Traducir es un comando separado que sí necesita una clave.

¿Qué formatos de archivo lee?

La ayuda de kaeris check lista JSON, ARB, YAML, .strings, .xcstrings, .po, Android XML, CSV, XLIFF, .properties, .resx, Fluent y Markdown como formatos de origen (kaeris 0.2.35 y posteriores). Guías por formato

¿Qué hace que el trabajo falle?

El código de salida de kaeris check: 0 limpio, 1 se encontró un problema, 2 uso incorrecto o un archivo que no puede leer. Un problema que la verificación llama rojo hace fallar el trabajo; strict hace que las claves desactualizadas también fallen. Referencia de GitHub Action

Seguir adelante

Otras recetas: GitLab CI · pre-commit · Scripts Make y npm

Referencia de CLI · Referencia de Check · Referencia de GitHub Action · Verificación gratuita en el navegador · Traducir en el navegador