Sourced from i18next-cli's changelog.
1.65.0
- fix(extract): respect
fallbackNSβ keys already translated in a fallback namespace are no longer duplicated into the requesting namespace's file (#272).
- Such keys are now attributed to the fallback namespace instead, so
removeUnusedKeysno longer prunes them from the fallback file (previously a key likecancelliving only in the fallback namespace was deleted there and re-created in every namespace that used it).- A key that already has a non-empty value in the requesting namespace's own file is treated as an intentional per-namespace override and keeps being extracted there, mirroring the i18next runtime lookup order (requested namespace first, then the fallback chain). Empty-string placeholders left behind by previous extract runs are cleaned up.
- Keys not found in any fallback namespace are still added to the requesting namespace, like the i18next
saveMissingbehavior.- feat(extract):
fallbackNSnow also accepts an array of namespaces (looked up in order, like the i18next runtime option) β supported byextract,status, and the TypeScript types generator.1.64.2
- fix(status): scope the pass/fail result to the requested locale (#271).
status <locale>now exits based on that locale only, instead of always evaluating every secondary language. Previously, running e.g.status en-AUon a fully-translated primary could print "π All keys present" and still exit1because an unrelated secondary (e.g. an emptyde-DE) was incomplete β a summary that contradicted the exit code.- When the requested locale is the primary, the check still fails only on absent keys (empty placeholders are tolerated); for a secondary it fails on any untranslated/absent key. The global view (
statuswith no locale) is unchanged.- The failure message now names the locale when scoped (
Error: Incomplete translations detected for "de-DE".) so the reason is no longer hidden.1.64.1
- fix(status): align plural reporting with the i18next runtime (#270).
- Plural categories that
Intl.PluralRulesonly selects for out-of-range values (e.g. French_many, which fires only for counts β₯ 1,000,000) are now treated as optional: a missing or empty variant is shown as a soft "optional plural form" note instead of a hard "missing key" error, so it no longer fails the check. Categories reachable by typical counts (including decimals, e.g. Polish/Russianother) remain required.- With
disablePlurals: true, a key used withcountis now considered satisfied when either its plural variants (_one/_other) or the bare key exist β mirroring the runtime'skey + suffix β keyresolution chain β
... (truncated)
9497126
1.65.0cebfb66
fix(extract): respect fallbackNS and stop duplicating keys into
namespace fil...4af3b5b
1.64.259e5c15
fix(status): scope pass/fail to the requested locale #27158e96ac
1.64.190fb64d
fix(status): align plural reporting with the i18next runtime #2704f32c05
1.64.09ab66af
feat(extract): support trailing wildcards in functions (e.g.
'tProps.*')3f40d0b
1.63.1eac231d
fix(init): pin @βinlang/plugin-i18next@β6.2.1 (restores Sherlock
annotations)