diff --git a/plugin-designs/big-picture/big-picture.vue b/plugin-designs/big-picture/big-picture.vue index 669ce5b89..ef0c694a7 100644 --- a/plugin-designs/big-picture/big-picture.vue +++ b/plugin-designs/big-picture/big-picture.vue @@ -126,6 +126,12 @@ watch(textDir, reflectDir) const listConfig = computed(() => { const cfg = {} if (config.value.list) cfg.list = config.value.list + // ⚠ THE SPELLING IS LOAD-BEARING AND THE TWO SIDES DO NOT MATCH BY NAME. This writes `lang`; the + // grid's prop is `languageCode`. It works because people-groups-grid.vue accepts three spellings — + // languageCode || locale || lang — and `lang` is the THIRD of them. Rename or "tidy" either side + // without the other and a composed grid silently renders in the wrong language on a profile-config + // embed, which is the exact failure 8b40f6c58 was written to fix and which no gate would catch: + // ?lang= embeds keep working, so only a host passing profile-config sees it. if (hostLang.value) cfg.lang = hostLang.value return Object.keys(cfg).length ? JSON.stringify(cfg) : '' }) diff --git a/plugin-designs/people-groups-grid/people-groups-grid.vue b/plugin-designs/people-groups-grid/people-groups-grid.vue index 49c1b2d81..c0fd6b6f9 100644 --- a/plugin-designs/people-groups-grid/people-groups-grid.vue +++ b/plugin-designs/people-groups-grid/people-groups-grid.vue @@ -261,6 +261,11 @@ const prayBaseUrl = computed(() => props.prayBaseUrl || cfg.value.prayBaseUrl | // localeFromUrl() is the library's own reader, imported rather than re-implemented, so the fetch and // the chrome can never disagree about what the URL asked for. Same ladder regions uses // (region-dashboards.vue:95), and a host that passes languageCode still wins. +// ⚠ ALL THREE SPELLINGS ARE IN USE AND `lang` HAS A CALLER. big-picture composes this grid and threads +// the host's locale into its profile-config as `lang` (big-picture.vue, listConfig) — it cannot reach +// this bundle any other way, because getRuntimeLocale is module state and a separately-built child gets +// its own copy. Dropping `cfg.value.lang` from this chain would leave a composed grid in the wrong +// language on a profile-config embed while ?lang= embeds carry on working, which is how it would ship. const languageCode = computed(() => props.languageCode || cfg.value.languageCode || cfg.value.locale || cfg.value.lang || localeFromUrl() || '')