Перевести

Проверка переводов с pre-commit

С помощью pre-commit коммит, затрагивающий файл локали, сначала запускает kaeris check и отклоняется, если перевод потерял плейсхолдер или ключ. Это офлайн и бесплатно: без API-ключа, без аккаунта.

Эту страницу перевёл KAERIS и проверил каждую строку обратным переводом. Носитель языка ещё не проверял. Оригинал на английском

Рецепт

Хук

Сохраните его как .pre-commit-config.yaml в корне проекта. Это локальный хук: pre-commit создает свою среду и устанавливает в нее kaeris из PyPI, поэтому ничего другого устанавливать не нужно. files ограничивает его коммитами, которые добавляют что-либо в locales/.

Конфигурация.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

Что он выводит при реальных запусках

Вывод kaeris 0.2.35, захваченный 27 октября 2026 г. Последняя строка каждого блока — это код выхода, который видит задача CI.

Что выводит коммит

Слева: коммит с файлами, которые в порядке. Справа: коммит с de.json, где {nam} вместо {name} и отсутствует ключ checkout; коммит отклоняется.

Файлы, которые в порядкеgit 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
Неправильный переводgit 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

Коммит, не затрагивающий файл локали

Хук пропускается, поэтому несвязанные коммиты выполняются быстро.

Нечего проверятьgit 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

Настройте его в три шага

  1. Добавьте хук

    Сохраните конфигурацию выше как .pre-commit-config.yaml и укажите свои --source и --langs. Сохраните закреплённую версию и обновляйте её при апгрейде.

  2. Установите git-хук

    Выполните pip install pre-commit, а затем pre-commit install один раз для каждого клона.

  3. Коммитьте как обычно

    Коммит, который добавляет файл в locales/, запускает проверку и отклоняется при неудаче. pre-commit run --all-files запускает ту же проверку по требованию, например, в CI.

Как мы это проверили

Каждая команда на этой странице была выполнена до того, как она была здесь написана. То, что не было выполнено, также перечислено.

Стоящие внимания параметры

Вопросы

Нужен ли API-ключ или учетная запись?

Нет. kaeris check описан в своей справке как статический, локальный и не требующий API, поэтому задаче не нужен секрет. Перевод — это отдельная команда, которая требует ключ.

Что обнаруживает проверка?

Потерянный или выдуманный плейсхолдер ({name}, %s, {{x}}, ICU plurals), отсутствующий ключ и отсутствующий файл локали. Сравнение локальное и статическое. Что проверяется, со всеми флагами

Замедляет ли это каждый коммит?

Только коммиты, которые добавляют файл, соответствующий files. Первый запуск создает среду хука, которая требует сетевого подключения; последующие запуски используют ее повторно. Мы не замеряли время, поэтому здесь нет цифр.

Продолжайте

Другие рецепты: GitHub Actions · GitLab CI · Make и npm скрипты

Справочник по CLI · Справочник по проверке · Справочник по GitHub Action · Бесплатная проверка в браузере · Перевод в браузере