- 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).