Score your Vue I18n locale files on every push and fail the build when a language regresses.
Vue I18n warns about missing keys in the console but falls back to the key path in production, so a string like nav.account.settings can render to a real user while every test passes in the source language.
Polylens scans the JSON or YAML behind Vue I18n, scores each language, and lists every missing key, broken named interpolation, malformed plural and stale string, then fails CI on regression. One curl call, strings stay in your repo.
Locale format: JSON or YAML (src/locales/{lang}.json). Point the gate at your src/locales directory.
Vue I18n renders the key path when a translation is missing in production. Polylens flags every missing key per language.
Vue I18n named interpolation like {account} breaks when a translator alters it. Polylens diffs every placeholder.
Vue I18n plurals are pipe-separated; a language with the wrong number of forms renders wrong. Polylens validates plural counts.
A reworded source leaves old translations live with nothing missing. Polylens detects staleness from scan history.
name: i18n health
on:
pull_request:
paths: ['src/locales/**']
jobs:
polylens:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: curl -fsSO https://polylens.sh/polylens-ci.mjs
- run: node polylens-ci.mjs ./src/locales
env:
POLYLENS_TOKEN: ${{ secrets.POLYLENS_TOKEN }}
FAIL_ON: error
NO_REGRESSION: 'true'Add your project token as the POLYLENS_TOKEN repository secret. A failing gate returns HTTP 422, so the build goes red like any other test.
Add one step to your pipeline that posts your locale files to Polylens. The gate returns HTTP 422 when a language regresses, so the build fails like any other test. No SDK, one curl call, and your strings never leave your repo.
Yes. Missing keys are the first of 13 issue classes Polylens detects, alongside broken placeholders, untranslated copy, malformed plurals, and stale strings. Every missing key is listed per language in the dashboard.
No. Vue I18n renders your translations at runtime; Polylens is the quality gate that scores the locale files before they ship. They sit on opposite ends of the pipeline and work together.
Wire Vue I18n into a CI gate in ten minutes. Free for one project, no card, strings stay in your repo.