Перекласти

Перевіряйте переклади в GitHub Actions

Переклад, який втрачає {name} або пропускає ключ, призводить до збою програми під час виконання, і перегляд рідко це виявляє. Цей робочий процес запускає kaeris check для кожного pull request і робить завдання червоним. Він офлайн і безкоштовний: без ключа API, без облікового запису.

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

Рецепт

Робочий процес

Збережіть його як .github/workflows/i18n-check.yml. Змініть source на файл вашої базової мови та languages на локалі, які ви використовуєте.

Конфігурація.github/workflows/i18n-check.yml
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.

Конфігурація.github/workflows/i18n-check.yml (steps)
    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.

Конфігурація.github/workflows/i18n-check.yml (steps)
    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.

Конфігурація.github/workflows/i18n-check.yml
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.

Файли, які в порядкуAction step output
## 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
Неправильний перекладAction step output
## 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 step output
$ 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 step output
$ 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

Налаштуйте це за три кроки

  1. Збережіть робочий процес

    Створіть .github/workflows/i18n-check.yml з робочим процесом вище, вказавши власні source та languages.

  2. Відкрийте pull request

    Надішліть гілку, яка змінює файл локалі. Завдання запускається для кожного pull request і стає червоним у разі втрати плейсхолдера або відсутності ключа.

  3. Зробіть перевірку обов'язковою

    У налаштуваннях репозиторію додайте завдання як обов'язкову перевірку стану в захисті гілок. Червоне завдання тоді блокує злиття.

Як ми це перевіряли

Кожна команда на цій сторінці була виконана перед тим, як її тут написали. Те, що не було виконано, також перелічено.

Опції, які варто знати

Запитання

Чи потрібен 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 · Безкоштовна перевірка в браузері · Переклад у браузері