Перевести

Проверка переводов в GitLab CI

Задача устанавливает пакет kaeris и запускает kaeris check для запросов на слияние, которые затрагивают ваши файлы локали. Потерянный плейсхолдер или отсутствующий ключ приводит к сбою конвейера. Это офлайн и бесплатно: без API-ключа, без учетной записи.

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

Рецепт

Задача

Добавьте его в .gitlab-ci.yml. Измените --source на файл вашего базового языка и --langs на локали, которые вы поставляете. Блок rules запускает задачу только для запросов на слияние, которые изменяют что-либо в locales/; удалите строки changes, чтобы запускать ее для каждого запроса на слияние.

Конфигурация.gitlab-ci.yml
i18n-check:
  stage: test
  image: python:3.12-slim
  rules:
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
      changes:
        - locales/**/*
  script:
    - pip install kaeris
    - kaeris check --source locales/en.json --langs de,fr --ci

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

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

Что выводит задача

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

Файлы, которые в порядкеjob log
$ pip install kaeris
Collecting kaeris
  Using cached kaeris-0.2.35-py3-none-any.whl.metadata (26 kB)
Using cached kaeris-0.2.35-py3-none-any.whl (131 kB)
Installing collected packages: kaeris
Successfully installed kaeris-0.2.35

$ kaeris check --source locales/en.json --langs de,fr --ci
✓ de: complete & placeholder-safe
✓ fr: complete & placeholder-safe
✓ all locales complete & placeholder-safe
Job succeeded
exit code: 0
Неправильный переводjob log
$ pip install kaeris
Requirement already satisfied: kaeris in C:\Users\Inzagi\AppData\Local\Temp\claude\C--Users-Inzagi-projects-kaeris\bfeebe69-3cfd-4f28-bbe7-e5600be082b9\scratchpad\venv-gl2\Lib\site-packages (0.2.35)

$ 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
ERROR: Job failed: exit code 1
exit code: 1

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

  1. Добавьте задание

    Вставьте задание в .gitlab-ci.yml и укажите свои --source и --langs.

  2. Откройте merge request

    Измените файл локали в ветке и откройте merge request. Задание выполнится и покажет все найденные проблемы в своем журнале.

  3. Требуйте прохождения пайплайна

    В настройках проекта в разделе merge requests включите требование успешного прохождения пайплайнов. Красное задание тогда заблокирует слияние.

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

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

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

Вопросы

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

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

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

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

Можно ли сохранить результат в файл?

Да: --json выводит результат в формате JSON, а --sarif PATH записывает отчет SARIF. Добавьте файл в раздел artifacts, если хотите его сохранить. Оба флага есть в справке kaeris check; мы не запускали загрузку артефактов в GitLab.

Продолжайте

Другие рецепты: GitHub Actions · pre-commit · Make и npm скрипты

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