Проверка переводов из скриптов Make или npm
Если в вашем проекте уже есть make test или npm test, добавьте проверку переводов туда. kaeris check завершается с кодом 1 при ошибке в плейсхолдере или ключе, поэтому вся цель завершается неудачно. Это офлайн и бесплатно: без API-ключа, без аккаунта.
Эту страницу перевёл KAERIS и проверил каждую строку обратным переводом. Носитель языка ещё не проверял. Оригинал на английском
Рецепт
Makefile
Установите проверку один раз с помощью pip install kaeris. Строка рецепта начинается с табуляции. Сделав test зависимым от i18n-check, вы запустите проверку перед тестами.
.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 и останавливает его, если проверка не пройдена.
{
"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 > [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 > [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, и ее код выхода.
$ 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
$ 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
Настройте его в три шага
Установите проверку
Выполните
pip install kaerisна машине или в CI-образе, который запускает ваши тесты.Добавьте цель или скрипт
Добавьте цель
i18n-checkв Makefile или скриптыi18n:checkиpretestвpackage.json, указав свои--sourceи--langs.Запустите обычную команду
make testилиnpm testтеперь сначала запускают проверку и останавливаются с ненулевым кодом выхода при ошибке в переводе.
Как мы это проверили
Каждая команда на этой странице была выполнена до того, как она была здесь написана. То, что не было выполнено, также перечислено.
Что выполнилось
npm testс приведенными выше скриптами, за исключением того, чтоtestбылecho(npm 11.17, Node 24), а kaeris 0.2.35 из PyPI находился в PATH. Чистые файлы: код выхода 0, тесты выполнены. Поврежденныйde.json: код выхода 1, тесты не выполнены.Что не выполнилось
makeне установлен на машине, где это проверялось. Строка рецепта была выполнена через shell, что make и делает с ней, поэтому код выхода выше реален, но сам Makefile не был запущен make.npm
Пакета kaeris в реестре npm пока нет, поэтому эта страница не перенаправляет вас в npm за ним. Node-проекты вызывают Python-пакет, как описано выше.
Стоящие внимания параметры
Считать устаревшие ключи ошибкой
--strictтакже выдает ошибку, когда в переводе есть ключи, которых больше нет в исходном файле.Сохраняйте названия брендов как написано
--glossary 'KAERIS,GitHub'приведет к сбою цели, которая упустила один из терминов. Тот же список может находиться в разделеkeepвkaeris.json.Другая структура файлов
--out— это папка с переводами, а--pattern '{lang}/common.json'— их имена файлов. По умолчанию: структура, которую записываетkaeris translate.Без флагов вообще
При наличии файла
kaeris.jsonв проекте (kaeris initзаписывает его),kaeris checkберет исходный файл, языки и папку из него.
Вопросы
Нужен ли API-ключ или учетная запись?
Нет. kaeris check описан в своей справке как статический, локальный и не требующий API, поэтому задаче не нужен секрет. Перевод — это отдельная команда, которая требует ключ.
Что обнаруживает проверка?
Потерянный или выдуманный плейсхолдер ({name}, %s, {{x}}, ICU plurals), отсутствующий ключ и отсутствующий файл локали. Сравнение локальное и статическое. Что проверяется, со всеми флагами
Работает ли без Python?
Проверка является Python-пакетом, поэтому машина, на которой выполняется проверка, нуждается в Python 3.8 или новее. Пакет не объявляет зависимостей.
Продолжайте
Другие рецепты: GitHub Actions · GitLab CI · pre-commit
Справочник по CLI · Справочник по проверке · Справочник по GitHub Action · Бесплатная проверка в браузере · Перевод в браузере