maziggy
8f9eb0d433
chore(i18n): extend parity gate to all locales with strict/info tiers
...
Previously the script only inspected en/zh-CN/zh-TW, leaving de/fr/it/ja/pt-BR
drift invisible. Now locales are auto-discovered from src/i18n/locales/, and a
STRICT list (de, zh-CN, zh-TW — currently in parity) gates CI while the rest
report informationally until their drift is caught up. ja notably has 27 real
placeholder bugs worth fixing before promotion to strict.
2026-04-19 08:36:13 +02:00
Minidoracat
a584e671ec
feat(i18n): add zh-TW locale and sync 74 missing keys in zh-CN ( #1017 ) ( #1025 )
...
* fix(i18n): sync zh-CN to match en structure
- Add 74 missing keys covering login.resetPassword, printers.firmwareModal
badges, settings.spoolbuddy device management, settings.tabs.spoolbuddy,
spoolbuddy.settings system config
- Fix fileManager.uploadFailed placeholder bug (had stray {{count}} copied
from zipFilesFailed; en value is plain "Upload failed")
Refs #1017
* feat(i18n): add zh-TW locale and enforce 3-way parity
- Add frontend/src/i18n/locales/zh-TW.ts (Traditional Chinese, Taiwan usage)
with full key set aligned to en.ts
- Register zh-TW in frontend/src/i18n/index.ts: import, resources,
supportedLngs, availableLanguages
- Add frontend/scripts/check-i18n-parity.mjs: TypeScript Compiler API-based
3-way gate checking key set equality, placeholder equality, and legacy
_plural / _one+_other suffix handling across en / zh-CN / zh-TW
- Wire check:i18n into test:run npm script so frontend-tests CI job
(ci.yml:227) gates future locale drift
Fixes #1017
2026-04-19 08:17:09 +02:00