At most one i18n library
Why it matters
Two i18n libraries fragment translation keys across two message-catalog formats, double the translation-team workflow, and produce two pluralization strategies that disagree on edge cases (zero counts, languages with dual/trial grammatical number). Translators receive exports from both systems and inevitably miss keys, so some UI strings render in the user's language while others fall back to the source locale. Build output ships both runtimes to every locale bundle.
Severity rationale
Info because the impact is translation-workflow drag and partial-translation bugs, not functional or security failures.
Remediation
Pick one based on your framework: next-intl for Next.js App Router, react-i18next for plain React, @lingui/react if you want compile-time extraction. Migrate call sites with grep -rl "from 'react-i18next'" src/, consolidate message catalogs under src/i18n/messages/ (one file per locale), and remove the loser:
npm uninstall react-i18next i18next i18next-browser-languagedetector
Update your translation export script in scripts/i18n/ to emit a single catalog format.
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the Multi-Session Drift Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
Taxons
History
- 2026-04-18·v1.0.0·Initial import from ai-slop-code-drift·automated