Перевіряйте переклади в GitHub Actions
Переклад, який втрачає {name} або пропускає ключ, призводить до збою програми під час виконання, і перегляд рідко це виявляє. Цей робочий процес запускає kaeris check для кожного pull request і робить завдання червоним. Він офлайн і безкоштовний: без ключа API, без облікового запису.
KAERIS переклав цю сторінку та перевірив кожен рядок зворотним перекладом. Носій мови ще не переглядав її. Оригінал англійською
Рецепт
Робочий процес
Збережіть його як .github/workflows/i18n-check.yml. Змініть source на файл вашої базової мови та languages на локалі, які ви використовуєте.
name: i18n check
on: pull_request
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: kaeris-io/kaeris-action@v1
with:
mode: check
source: locales/en.json
languages: de,fr
Без Python: npx
Пакет npm kaeris запускає ту саму перевірку на Node 18 і новіших; npx завантажує його сам, окремого встановлення немає. У пакеті лише check: для перекладу потрібен пакет Python.
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npx kaeris check --source locales/en.json --langs de,fr
Те саме без Action
Прості кроки з Python та pip. Потім у журналі відображається кожен знайдений елемент рядок за рядком замість таблиці, яку друкує Action.
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- run: pip install kaeris
- run: kaeris check --source locales/en.json --langs de,fr --ci
Знайдені помилки в точних рядках pull request (необов'язково)
Action також може створювати звіт SARIF; завантаження його перетворює кожну знайдену помилку на анотацію в diff. Завантаження для сканування коду безкоштовне для публічних репозиторіїв; приватні потребують GitHub Advanced Security.
name: i18n check
on: pull_request
permissions:
contents: read
security-events: write
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: kaeris-io/kaeris-action@v1
with:
mode: check
source: locales/en.json
languages: de,fr
sarif-file: kaeris.sarif
- uses: github/codeql-action/upload-sarif@v3
if: always()
with:
sarif_file: kaeris.sarif
Що друкується під час реальних запусків
Вивід kaeris 0.2.35, захоплено 27 жовтня 2026 року. Остання строка кожного блоку — це код виходу, який бачить CI-завдання.
Що друкує завдання
Action друкує зведену таблицю для кожної мови та завершує роботу з рядком помилки, коли щось не так. Зліва: файли, які в порядку. Справа: de.json з {nam} замість {name} та відсутнім ключем checkout.
## KAERIS i18n — CI check Placeholder-loss: **0** (should be 0). | Language | Status | Missing | Placeholder issues | Translated | |---|---|---|---|---| | de | ✓ complete | 0 | 0 | – | | fr | ✓ complete | 0 | 0 | – | _Generated from `kaeris check --json` — no fabricated numbers._ step exit=0 --- GITHUB_OUTPUT (without summary body): missing=0 placeholder-issues=0 changed=false check-exit-code=0 translate-exit-code=0
## KAERIS i18n — CI check Placeholder-loss: **1** (should be 0). Missing keys remaining: **1**. | Language | Status | Missing | Placeholder issues | Translated | |---|---|---|---|---| | de | ⚠ 1 missing, 1 placeholder issue | 1 | 1 | – | | fr | ✓ complete | 0 | 0 | – | _Generated from `kaeris check --json` — no fabricated numbers._ ::error::kaeris check found incomplete/broken translations — see the job summary for the language matrix step exit=1 --- GITHUB_OUTPUT (without summary body): missing=1 placeholder-issues=1 changed=false check-exit-code=1 translate-exit-code=0
Що друкує крок з npx
Той самий проєкт, перевірений через npx: kaeris 0.2.37 з npm, порожній кеш npm і CI=true, як на чистому раннері. Перший рядок — npm встановлює пакет.
$ npx kaeris check --source locales/en.json --langs de,fr npm warn exec The following package was not found and will be installed: [email protected] ✓ de: complete & placeholder-safe ✓ fr: complete & placeholder-safe ✓ all locales complete & placeholder-safe exit code: 0
$ npx kaeris check --source locales/en.json --langs de,fr npm warn exec The following package was not found and will be installed: [email protected] ✗ 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
Налаштуйте це за три кроки
Збережіть робочий процес
Створіть
.github/workflows/i18n-check.ymlз робочим процесом вище, вказавши власніsourceтаlanguages.Відкрийте pull request
Надішліть гілку, яка змінює файл локалі. Завдання запускається для кожного pull request і стає червоним у разі втрати плейсхолдера або відсутності ключа.
Зробіть перевірку обов'язковою
У налаштуваннях репозиторію додайте завдання як обов'язкову перевірку стану в захисті гілок. Червоне завдання тоді блокує злиття.
Як ми це перевіряли
Кожна команда на цій сторінці була виконана перед тим, як її тут написали. Те, що не було виконано, також перелічено.
Що було виконано
Скрипт кроку
kaeris-io/kaeris-actionз тегомv1, скопійований з GitHub 27 жовтня 2026 року та запущений у bash на тестовому проекті, з встановленим CLI з PyPI (kaeris 0.2.35). Чисті файли: код виходу 0. Пошкодженийde.json: код виходу 1 та показаний вище рядок помилки.npx
npx kaeris checkз пакета npm kaeris 0.2.37 запущено 28 жовтня 2026 на тому самому тестовому проєкті, з порожнім кешем npm,CI=trueі без--yes. Чисті файли: код виходу 0. Зламанийde.json: код виходу 1.SARIF
Прапорець
--sarifбуло запущено на пошкодженому проекті та записано звіт з 4 результатами; на чистих файлах він записав звіт з 0. Завантаження до GitHub не було спробовано.Що не запускалося
Сам файл робочого процесу не запускався на раннері GitHub, як і
actions/checkout,actions/setup-python,actions/setup-nodeтаupload-sarif. Синтаксис робочих процесів вище GitHub не перевіряв.Який CLI встановлює Action
Action запускає
pip install "kaeris>=0.2.12", тому завдання отримує найновішу версію на той момент. Якщо вам потрібна фіксована версія, використовуйте варіант з простими кроками та вкажіть її:pip install kaeris==0.2.35.
Опції, які варто знати
Помилки на застарілих ключах також
Встановіть
strict: trueв Action (або--strictу простому варіанті).Переклади в іншій папці
Встановіть
out: path/to/translationsв Action; за замовчуванням він використовує папку вихідного файлу.Зберігайте назви брендів як написано
--glossary 'KAERIS,GitHub'призведе до помилки цільового файлу, який пропустив один із термінів. Той самий список може бути вkeepуkaeris.json.Інший макет файлів
--out— це папка з перекладами, а--pattern '{lang}/common.json'— їхні імена файлів. За замовчуванням: макет, який створюєkaeris translate.
Запитання
Чи потрібен API ключ або обліковий запис?
Ні. kaeris check описано у його власній довідці як статичний, локальний і без API, тому завдання не потребує секретів. Переклад — це окрема команда, яка потребує ключа.
Які формати файлів він читає?
Довідка kaeris check перелічує JSON, ARB, YAML, .strings, .xcstrings, .po, Android XML, CSV, XLIFF, .properties, .resx, Fluent та Markdown як вихідні формати (kaeris 0.2.35 і новіші). Посібники за форматом
Що призводить до збою завдання?
Код виходу kaeris check: 0 — чисто, 1 — знайдено проблему, 2 — неправильне використання або файл, який неможливо прочитати. Проблема, яку перевірка називає червоною, призводить до збою завдання; strict також призводить до збою застарілих ключів. Довідник GitHub Action
Продовжуйте
Інші рецепти: GitLab CI · pre-commit · Make та npm скрипти
Довідник CLI · Довідник Check · Довідник GitHub Action · Безкоштовна перевірка в браузері · Переклад у браузері