What's Changed
🌟 Features
- Part options support for $n by @mauryapari in #2170
- feat: Part options support $d by @mauryapari in #2177
- feat: compatible Vue3 vapor mode by @kazupon in #2299
- feat(message-compiler): support escape sequence by @kazupon in #2394
- feat!: Support automatic pluralization with
Intl.PluralRulesby @kazupon in #2400 - feat: support isolated scope by @kazupon in #2404
🐛 Bug Fixes
- fix: cannot resolve the ast messages which has json path by @kazupon in #2157
- fix(typing): n() & d() output depending "part" option by @pinguet62 in #2193
- Fix declaration order in Number formatting with options ResourceKeys must be before OptionsType by @louis49 in #2205
- Fix: Adjust stub file paths for accurate resolution during rolldown build by @babu-ch in #2217
- fix: revert vue devtools timeline listening code by @kazupon in #2359
- fix(core-base): throw error when has string prototype key by @kazupon in #2402
- fix(core-base): key paths containing javascript built-ins are handled inconsistently by @kazupon in #2403
- fix: wrong $d type by @kazupon in #2405
- fix: export conditions for node.js by @kazupon in #2408
- fix: te returns false if the key contains a do by @kazupon in #2409
- fix: modifiers skip missing translation keys by @kazupon in #2412
- fix: Numeric named parameter overwrites plural parameter in pluralization by @kazupon in #2413
- fix: Suppressing automatic locale fallback with ! breaks
n/$nandd/$dformatting by @kazupon in #2418 - fix: Resource Keys completion does not work with global messages and $t by @kazupon in #2421
- fix:
$noverloads useDefineNumberFormatinstead ofDefineDateTimeFormatby @babu-ch in #2459 - fix: linked messages fail to resolve keys containing dots by @babu-ch in #2458
- fix: backport CVE-2025-53892 (escapeParameterHtml DOM XSS hardening) to master by @vulgraph in #2470
💥 Breaking Changes
- breaking: update component injection APIs for drop legacy by @kazupon in #2176
- breaking: change MissingHandler 2nd parameter by @kazupon in #2358
- breaking: deprecate
register*global functions in favor ofcreateI18noptions by @kazupon in #2445 - chore!: drop Node.js 20 support by @kazupon in #2487
⚡ Improvement Features
- fix: update slot key filtering to exclude internal keys by @edison1105 in #2167
- fix: improvement
nand$ntypings by @kazupon in #2174 - Named, list, modifier examples by @mauryapari in #2186
- fix: error on duplicate useI18n calling on local scope by @kazupon in #2204
- fix: typo by @kazupon in #2222
- Emit INVALID_TOKEN_IN_PLACEHOLDER on invalid palceholder token by @lutejka in #2252
- fix: include
vitest/nodetypes to fix Vitest 4 type errors by @haoqunjiang in #2303 - fix:
useI18nimplementation with provide-inject fully by @kazupon in #2357 - refactor: reduce variable assignments and function calls by @BobbieGoede in #2392
- fix: display message commpiler error strictly by @kazupon in #2410
- fix: te function returns false although fallback exists by @kazupon in #2416
- fix: Usage of
n()and$n()withundefinedshould not throw errors by @kazupon in #2417 - docs: add possible errors for number/datetime formatter APIs by @mitre88 in #2424
- fix(i18n-t): pass component children as slots by @kazupon in #2475
🔒 Security Fixes
📈 Performance Fixes
- perf: use
shallowRefserver-side fordatetimeFormatsby @BobbieGoede in #2333 - fix: enable the minify selecting option by @kazupon in #2356
📝️ Documentations
- Fix typos in CHANGELOG by @NoelDeMartin in #2151
- docs: llms friendly text generation by @kazupon in #2168
- docs: fix typo in pluralization.md by @KonRatt in #2184
- docs: replace Legacy API usage with Composition API usage by @BobbieGoede in #2196
- Update StackBlitz link in getting started guide by @babu-ch in #2218
- docs: update v8 docs links to point to legacy site by @babu-ch in #2227
- docs: Add SSR configuration guide for vue-i18n plugin by @babu-ch in #2262
- Update component.md to explain it doesn't work in petite vue by @riderx in #2259
- docs: fix typos in docs by @kianmeng in #2279
- docs: add Chinese and Japanese documentation translations by @fonghehe in #2390
- fix typoes, broken
rtlink by @Nikita0x in #2393 - docs: update v12 migration guide by @kazupon in #2395
- docs: add v11 pages by @kazupon in #2396
- docs: revise docs for v12 by @kazupon in #2397
- docs: fix wrong plural usage by @kazupon in #2401
- docs: improve petite-vue-i18n resource key handling by @kazupon in #2414
- docs: improve unplugin-vue-i18n options explanation by @kazupon in #2419
- docs: more details for
availableLocalesby @kazupon in #2420
🍭 Examples
- examples: Storybook Example with vue3 and vite by @mauryapari in #2173
New Contributors
- @NoelDeMartin made their first contribution in #2151
- @edison1105 made their first contribution in #2167
- @KonRatt made their first contribution in #2184
- @louis49 made their first contribution in #2205
- @kitsiosk made their first contribution in #2226
- @autologie made their first contribution in #2228
- @lutejka made their first contribution in #2252
- @riderx made their first contribution in #2259
- @kianmeng made their first contribution in #2279
- @kbegiedza made their first contribution in #2282
- @haoqunjiang made their first contribution in #2303
- @fonghehe made their first contribution in #2390
- @Nikita0x made their first contribution in #2393
- @mitre88 made their first contribution in #2424
- @vulgraph made their first contribution in #2470
Full Changelog: v12.0.0-alpha.2...v12.0.0-alpha.4