Übersetzen

Übersetzungen mit pre-commit prüfen

Mit pre-commit wird ein Commit, der eine Locale-Datei berührt, zuerst kaeris check ausführen und abgewiesen, wenn eine Übersetzung einen Platzhalter oder einen Schlüssel verloren hat. Es ist offline und kostenlos: kein API-Schlüssel, kein Konto.

KAERIS hat diese Seite übersetzt und jede Zeile durch Rückübersetzung geprüft. Ein Muttersprachler hat sie noch nicht überprüft. Englisches Original

Das Rezept

Der Hook

Speichern Sie ihn als .pre-commit-config.yaml im Projekt-Root. Es ist ein lokaler Hook: pre-commit baut seine eigene Umgebung auf und installiert kaeris von PyPI darin, sodass nichts anderes installiert werden muss. files beschränkt ihn auf Commits, die etwas unter locales/ stagen.

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

Was es bei echten Ausführungen ausgibt

Ausgabe von kaeris 0.2.35, erfasst am 27. Oktober 2026. Die letzte Zeile jeder Box ist der Exit-Code, den der CI-Job sieht.

Was ein Commit ausgibt

Links: ein Commit mit Dateien, die in Ordnung sind. Rechts: ein Commit mit de.json, das {nam} anstelle von {name} hat und den checkout-Schlüssel vermisst; der Commit wird abgewiesen.

Dateien, die in Ordnung sindgit 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
Eine fehlerhafte Übersetzunggit 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

Ein Commit, der keine Locale-Datei berührt

Der Hook wird übersprungen, sodass nicht verwandte Commits schnell sind.

Nichts zu prüfengit 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

Richten Sie es in drei Schritten ein

  1. Hook hinzufügen

    Speichern Sie die obige Konfiguration als .pre-commit-config.yaml und legen Sie Ihre eigenen --source und --langs fest. Behalten Sie die Versionsmarkierung bei und erhöhen Sie sie, wenn Sie ein Upgrade durchführen.

  2. Git-Hook installieren

    Führen Sie pip install pre-commit und dann pre-commit install einmal pro Klon aus.

  3. Wie gewohnt committen

    Ein Commit, der eine Datei unter locales/ staget, führt die Prüfung aus und wird bei einem Fehler abgelehnt. pre-commit run --all-files führt dieselbe Prüfung bei Bedarf aus, z. B. in CI.

Wie wir das geprüft haben

Jeder Befehl auf dieser Seite wurde ausgeführt, bevor er hier geschrieben wurde. Was nicht ausgeführt wurde, ist ebenfalls aufgelistet.

Optionen, die es wert sind, zu kennen

Fragen

Benötigt es einen API-Schlüssel oder ein Konto?

Nein. kaeris check wird in seiner eigenen Hilfe als statisch, lokal und ohne API beschrieben, sodass der Job kein Secret benötigt. Das Übersetzen ist ein separater Befehl, der einen Schlüssel benötigt.

Was fängt die Prüfung ab?

Ein verlorener oder erfundener Platzhalter ({name}, %s, {{x}}, ICU-Pluralformen), ein fehlender Schlüssel und eine nicht vorhandene Locale-Datei. Der Vergleich ist lokal und statisch. Was es prüft, mit jedem Flag

Verlangsamt es jeden Commit?

Nur Commits, die eine Datei staget, die mit files übereinstimmt. Der erste Lauf erstellt die Hook-Umgebung, die ein Netzwerk benötigt; spätere Läufe verwenden sie wieder. Wir haben es nicht gemessen, daher keine Zahl hier.

Weiter geht's

Andere Rezepte: GitHub Actions · GitLab CI · Make und npm Skripte

Referenz zur CLI · Referenz zur Prüfung · Referenz zur GitHub Action · Kostenlose Prüfung im Browser · Übersetzen im Browser