i18n: keep the page's locale in a vue-i18n instance

The application views install one vue-i18n instance that holds the active
locale and the catalogs. src/i18n/index.js stays free of Vue: bindLocale()
keeps its locale in the instance's ref, so t(), tn() and the Intl formatters
read it from there and a view that translates while rendering renders again
when the locale changes. A tag written straight to the ref is normalized.
Message formatting, catalogs and call sites are unchanged, and switching
language still reloads the page.

The instance outlives the views: unmounting one no longer disposes it. The
browser build defines vue-i18n's feature flags and drops its message
compiler, which Core does not use.
This commit is contained in:
Sameh Khamis committed 2026-11-01 15:25:55 -08:00
1 parent 22d4cf8ee7
commit 2c72a038d5
12 files changed
+330 -44

No files matched your search

+2 -1
View File
@@ -68,7 +68,8 @@
"pbf": "^5.1.2",
"pinia": "^2.3.1",
"satellite.js": "^6.0.2",
"vue": "^3.5.44"
"vue": "^3.5.44",
"vue-i18n": "^11.4.15"
},
"devDependencies": {
"@happy-dom/global-registrator": "^20.14.6",