Перевести

Проверка переводов из скриптов Make или npm

Если в вашем проекте уже есть make test или npm test, добавьте проверку переводов туда. kaeris check завершается с кодом 1 при ошибке в плейсхолдере или ключе, поэтому вся цель завершается неудачно. Это офлайн и бесплатно: без API-ключа, без аккаунта.

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

Рецепт

Makefile

Установите проверку один раз с помощью pip install kaeris. Строка рецепта начинается с табуляции. Сделав test зависимым от i18n-check, вы запустите проверку перед тестами.

КонфигурацияMakefile
.PHONY: i18n-check test

i18n-check:
	kaeris check --source locales/en.json --langs de,fr --ci

test: i18n-check
	./run-tests.sh

npm скрипты

Скрипт просто вызывает kaeris из вашего PATH, поэтому проверка осуществляется через Python-пакет из pip install kaeris. pretest запускается перед test и останавливает его, если проверка не пройдена.

Конфигурацияpackage.json
{
  "scripts": {
    "i18n:check": "kaeris check --source locales/en.json --langs de,fr --ci",
    "pretest": "npm run i18n:check",
    "test": "jest"
  }
}

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

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

npm test

Вывод npm test с приведенными выше скриптами (скрипт test в этом запуске был echo). Слева: файлы, которые в порядке. Справа: de.json с {nam} вместо {name} и отсутствующим ключом checkout; npm останавливается перед test.

Файлы, которые в порядкеnpm test
$ npm test

> [email protected] pretest
> npm run i18n:check


> [email protected] i18n:check
> kaeris check --source locales/en.json --langs de,fr --ci

✓ de: complete & placeholder-safe
✓ fr: complete & placeholder-safe
✓ all locales complete & placeholder-safe

> [email protected] test
> echo tests would run here

tests would run here
exit code: 0
Неправильный переводnpm test
$ npm test

> [email protected] pretest
> npm run i18n:check


> [email protected] i18n:check
> kaeris check --source locales/en.json --langs de,fr --ci

✗ 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

Строка рецепта Makefile

Та же команда, которую выполняет цель i18n-check, и ее код выхода.

Файлы, которые в порядкеrecipe line
$ kaeris check --source locales/en.json --langs de,fr --ci
✓ de: complete & placeholder-safe
✓ fr: complete & placeholder-safe
✓ all locales complete & placeholder-safe
exit code: 0
Неправильный переводrecipe line
$ kaeris check --source locales/en.json --langs de,fr --ci
✗ 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

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

  1. Установите проверку

    Выполните pip install kaeris на машине или в CI-образе, который запускает ваши тесты.

  2. Добавьте цель или скрипт

    Добавьте цель i18n-check в Makefile или скрипты i18n:check и pretest в package.json, указав свои --source и --langs.

  3. Запустите обычную команду

    make test или npm test теперь сначала запускают проверку и останавливаются с ненулевым кодом выхода при ошибке в переводе.

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

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

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

Вопросы

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

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

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

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

Работает ли без Python?

Проверка является Python-пакетом, поэтому машина, на которой выполняется проверка, нуждается в Python 3.8 или новее. Пакет не объявляет зависимостей.

Продолжайте

Другие рецепты: GitHub Actions · GitLab CI · pre-commit

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