Sourced from i18next's releases.
v26.5.12
- fix: with
keySeparator: falseor a custom separator like'::', a nested interpolation value that is0,falseor''is now inserted.'You have {{stats.unread}} unread messages'with{ stats: { unread: 0 } }kept the raw{{stats.unread}}placeholder (or became''withskipOnVariables: false), also for formatted values like{{order.total, currency(USD)}}and for nesteddefaultVariables: a falsy value was looked up again with the configured separator, which does not splitstats.unread. The default'.'separator was not affected. When the same name exists both nested and as a flat dotted key ({ a: { b: 0 }, 'a.b': 'flat' }), the nested0,falseor''now wins, as a truthy one already did; a nestednullstill falls back to the flat key. Thanks@nk-batman21(#2464).- fix:
cloneInstance({ forkResourceStore: true })no longer changes the options object it is given. It deletedforkResourceStorefrom it, so reusing the same object for a second clone silently shared the parent's resource store (adding a resource to that clone also changed the parent), and frozen options threw aTypeError. Clones withoutforkResourceStoreare unchanged. Thanks@edsonsims(#2463).- perf(types): a selector
t(($) => ...)(enableSelector: true/'strict') no longer filters the whole namespace, and no longer does it again for every distinctcontextvalue. To drop keys without anything to select, the filtered type looked at the filtered keys of every nested object, down to the leaves, also for the branches the selector does not read. It now decides from the source value. With 10,000 keys in 100 groups, one call went from 3.3M type instantiations (1.7s) to 0.85M (0.8s), and ten calls with ten contexts from 21.7M (8.8s) to 1.05M (0.9s), on TypeScript 6. Selected values are unchanged for context, plural, ordinal, nested and array keys, with three side effects: a type error on a selector now shows the type asFilterKeysObject<{ ...source keys }, Context>instead of the filtered object, an object whose values are allnullorundefined({ x: null }) is kept as{}instead of being dropped, and anullkey next to its plural forms (foo: null,foo_one,foo_other) is typed as the plural value instead ofnever. Thanks@GabrielVooDB(#2462).
Sourced from i18next's changelog.
26.5.12
- fix: with
keySeparator: falseor a custom separator like'::', a nested interpolation value that is0,falseor''is now inserted.'You have {{stats.unread}} unread messages'with{ stats: { unread: 0 } }kept the raw{{stats.unread}}placeholder (or became''withskipOnVariables: false), also for formatted values like{{order.total, currency(USD)}}and for nesteddefaultVariables: a falsy value was looked up again with the configured separator, which does not splitstats.unread. The default'.'separator was not affected. When the same name exists both nested and as a flat dotted key ({ a: { b: 0 }, 'a.b': 'flat' }), the nested0,falseor''now wins, as a truthy one already did; a nestednullstill falls back to the flat key. Thanks@nk-batman21(#2464).- fix:
cloneInstance({ forkResourceStore: true })no longer changes the options object it is given. It deletedforkResourceStorefrom it, so reusing the same object for a second clone silently shared the parent's resource store (adding a resource to that clone also changed the parent), and frozen options threw aTypeError. Clones withoutforkResourceStoreare unchanged. Thanks@edsonsims(#2463).- perf(types): a selector
t(($) => ...)(enableSelector: true/'strict') no longer filters the whole namespace, and no longer does it again for every distinctcontextvalue. To drop keys without anything to select, the filtered type looked at the filtered keys of every nested object, down to the leaves, also for the branches the selector does not read. It now decides from the source value. With 10,000 keys in 100 groups, one call went from 3.3M type instantiations (1.7s) to 0.85M (0.8s), and ten calls with ten contexts from 21.7M (8.8s) to 1.05M (0.9s), on TypeScript 6. Selected values are unchanged for context, plural, ordinal, nested and array keys, with three side effects: a type error on a selector now shows the type asFilterKeysObject<{ ...source keys }, Context>instead of the filtered object, an object whose values are allnullorundefined({ x: null }) is kept as{}instead of being dropped, and anullkey next to its plural forms (foo: null,foo_one,foo_other) is typed as the plural value instead ofnever. Thanks@GabrielVooDB(#2462).
83f35e4
26.5.12a2a354e
buildb6447c1
changelog for 26.5.128bab707
changelog for unreleased #24645c43d88
fix: a nested null interpolation value still falls back to a flat
key1b7b734
fix: keep nested 0, false and '' interpolation values with a custom
keySepara...4184f91
changelog for unreleased #24634af40e5
fix: preserve caller options when forking instances (#2463)42af830
chore: update dev dependencies to clear the Dependabot alerts39bdcfe
perf(types): selector t() no longer filters the whole namespace (#2462)