The polsia-inc/lokali/.github/actions/i18n-coverage action scans your messages.json, locales/*.json, and i18n/** on every pull request — then posts a per-language coverage comment and opens a first-run Coverage delta PR.
Install on a single repo or across an entire org.
A coverage check that lives in your PR
Every push that touches a locale file gets a coverage table in the PR thread. No manual commands, no extra CI to wire up — install the GitHub App and the action runs on the next PR.
Install in 30 seconds
Two surfaces — user-level for trying it on one repo, org-level for enforcing it across every public repo you ship.
i18n.yml snippet into .github/workflows/ on the repo — or your org's .github repo for org-wide coverage.Drop-in workflow snippet
One i18n.yml file. Globs match the same paths Lokali's translation App already knows — so the bot works the moment you install.
name: i18n Coverage on: pull_request: paths: - '**/locales/**' - '**/i18n/**' - '**/translations/**' - '**/messages/**' jobs: coverage: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: polsia-inc/lokali/.github/actions/i18n-coverage@main with: github-token: ${{ secrets.GITHUB_TOKEN }}
What comes with the install
Coverage is one part of Lokali. Once the App is on the repo, the full translation pipeline is available too.
workflow_dispatch all open a Coverage delta PR with the same table.messages/*.json, public/locales/*/*.json, src/locales/**, and any custom directory you configure..github repo and every public repo gets coverage on every PR — no per-repo wiring.One URL works for user-level and org-level installs. Coverage arrives on your next PR.
🟡 i18n Coverage: 73%
43 keys missing across all locales. View full audit on Lokali →