Traducir

Comprobar traducciones con pre-commit

Con pre-commit, un commit que toca un archivo de localización ejecuta primero kaeris check y es rechazado cuando una traducción pierde un marcador o una clave. 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 hook

Guárdalo como .pre-commit-config.yaml en la raíz del proyecto. Es un hook local: pre-commit construye su propio entorno e instala kaeris desde PyPI en él, por lo que no hay que instalar nada más. files lo limita a commits que preparan algo bajo locales/.

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

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

Izquierda: un commit con archivos que están bien. Derecha: un commit con de.json que tiene {nam} en lugar de {name} y la clave checkout faltante; el commit es rechazado.

Archivos que están biengit 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 traducción rotagit 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 que no toca ningún archivo de localización

El hook se omite, por lo que los commits no relacionados se mantienen rápidos.

Nada que comprobargit 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

Configúralo en tres pasos

  1. Añadir el hook

    Guarda la configuración anterior como .pre-commit-config.yaml y define tus propios --source y --langs. Mantén la versión fijada y actualízala cuando hagas un upgrade.

  2. Instalar el git hook

    Ejecuta pip install pre-commit y luego pre-commit install una vez por clonación.

  3. Commit como siempre

    Un commit que añade un archivo en locales/ ejecuta la comprobación y es rechazado si falla. pre-commit run --all-files ejecuta la misma comprobación bajo demanda, por ejemplo en CI.

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é detecta la comprobación?

Un marcador perdido o inventado ({name}, %s, {{x}}, plurales ICU), una clave faltante y un archivo de localización que no está allí. La comparación es local y estática. Lo que comprueba, con cada flag

¿Ralentiza cada commit?

Solo los commits que añaden un archivo que coincide con files. La primera ejecución construye el entorno del hook, lo que requiere red; las ejecuciones posteriores lo reutilizan. No lo medimos, así que no hay cifras aquí.

Seguir adelante

Otras recetas: GitHub Actions · GitLab CI · Scripts Make y npm

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