mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-08 17:06:15 -08:00
ci(i18n): fail on new English-identical translations (#1793)
* ci(i18n): fail on new English-identical translations The drift check only warned about locale values identical to English, so untranslated strings kept landing. It now fails on any such value that tools/i18n/identical-en-baseline.json does not record for that locale and key. The baseline captures today's 2,015 entries: legitimately identical values (brand and technical names, language autonyms, PIN) and the existing debt. An entry only covers the English text it recorded, so copying reworded English into a locale fails too. Baseline entries that are no longer identical are reported, not fatal. `pnpm run i18n:baseline:update` rewrites the baseline deliberately; CI runs `pnpm run i18n:validate` (node tests, then the check) and never rewrites it. `--fail-on-identical` remains as a strict audit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(i18n): keep the baseline intact on failed updates and strict audits `--update-baseline` now writes nothing while any locale is unreadable or has missing or extra keys, so an incomplete translation cannot reshape the baseline. `--fail-on-identical` no longer reads the baseline it ignores, so a damaged file cannot block a strict audit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
4adc3ba20f
commit
0768ae5ea2
7 files changed
+2671
-83
No files matched your search
@@ -242,14 +242,32 @@ pnpm run coverage:e2e:v8:web
|
||||
## I18n
|
||||
|
||||
```bash
|
||||
pnpm run i18n:check
|
||||
pnpm run i18n:validate # checker unit tests, then the check (CI)
|
||||
pnpm run i18n:check # the check only
|
||||
pnpm run i18n:baseline:update # deliberate: rewrite the English-identical baseline
|
||||
```
|
||||
|
||||
The i18n check is non-mutating. It compares every locale file in
|
||||
`apps/web/src/assets/i18n/` against `en.json` and fails on missing or extra keys.
|
||||
Identical English fallback values are reported as warnings by default; use
|
||||
`node tools/i18n/check-drift.mjs --fail-on-identical` for a stricter translation
|
||||
audit.
|
||||
It also fails on a locale value that is identical to English unless
|
||||
`tools/i18n/identical-en-baseline.json` records that exact English text for the
|
||||
same locale and key. The baseline holds values that are legitimately the same
|
||||
in a language (brand and technical names, language autonyms, loanwords such as
|
||||
"PIN") and the untranslated debt that existed when the guard was added, so new
|
||||
keys must ship translated. An entry stops covering its key once the English
|
||||
text changes, so copying reworded English into a locale fails as well.
|
||||
|
||||
Baseline entries that are no longer English-identical (translated, removed, or
|
||||
reworded) are reported but do not fail. `pnpm run i18n:baseline:update`
|
||||
rewrites the baseline from the current locale files, dropping those entries
|
||||
and printing every added one; it writes nothing while any locale is unreadable
|
||||
or has missing or extra keys. Run it only after translating, or for a value
|
||||
that is legitimately identical in that language; review the diff, and never
|
||||
run it in CI. A new locale starts with no baseline entries, so it has to
|
||||
record its legitimate identical values the same way.
|
||||
`node tools/i18n/check-drift.mjs --fail-on-identical` ignores the baseline for
|
||||
a full translation audit. CI runs `pnpm run i18n:validate` in the unit test
|
||||
job.
|
||||
|
||||
## Performance
|
||||
|
||||
|
||||
Reference in new issue
Block a user