From 3df69dde014cc6bf55fde6d3d6b7c6c5294874cf Mon Sep 17 00:00:00 2001 From: Doxa Maps Date: Wed, 30 Sep 2026 06:01:39 +0000 Subject: [PATCH] Regions: the country poster prints in English in every locale, like the Country Posters wall MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Regions tab handed the sheet generator its localised card, so an Arabic reader's poster read "Pray for السودان" and Administrative areas "السودان" beside an English "Countries: Sudan". The poster is English by recorded decision; the generator now gets the data's own record by id, as the wall does. --- .../regions-dashboard/regions-list.vue | 10 +- public/dx-maps/doxa-maps-spa/manifest.json | 12 +- public/dx-maps/manifest.json | 12 +- .../region-dashboards/index.html | 2 +- .../regions-dashboard/regions-dashboard.js | 230 +++++++++--------- .../regions-dashboard/regions-list/index.html | 2 +- .../regions-dashboard/regions-mfe/index.html | 2 +- 7 files changed, 138 insertions(+), 132 deletions(-) diff --git a/plugin-designs/regions-dashboard/regions-list.vue b/plugin-designs/regions-dashboard/regions-list.vue index 6128d67bb..8c86926aa 100644 --- a/plugin-designs/regions-dashboard/regions-list.vue +++ b/plugin-designs/regions-dashboard/regions-list.vue @@ -299,13 +299,19 @@ const countryRecords = createPeopleGroupRecords({ // Page 1 of a country packet, and the country poster, drawn at the click. Nothing is stored: no // country sheet ships, and the packet's default lift would ask for posters/country-.html and // 404 on all 175. -const countrySheet = makeCountrySheet({ +const sheetForRecord = makeCountrySheet({ records: countryRecords, assetsBase: () => posterAssetsBase.value, // The same list the Country Posters wall computes its series from, so this tab's printed // "map N of M" agrees with the wall's print and with the country's thumbnail. countries: posterData.countries || [], }) +// ★ THE POSTER IS ENGLISH BY RECORDED DECISION (series.json english_only_note), so the generator gets +// the DATA's own record, never the card: the card's label is localised (localisedPoster below), and +// handing it over printed "Pray for السودان" beside an English "Countries: Sudan" in Arabic. The +// Country Posters wall resolves the record by id the same way (country-poster-wall.vue, byId). +const POSTER_BY_ID = new Map((posterData.countries || []).map(c => [c.id, c])) +const countrySheet = (card, format) => sheetForRecord(POSTER_BY_ID.get(card && card.id) || card, format) const openPosters = ref(new Set()) function togglePosters(region) { @@ -330,7 +336,7 @@ const POSTER_BY_ISO3 = new Map((posterData.countries || []).map(c => [String(c.i // countries, and countryName.js records that swap as a product decision rather than a refactor. // · THE SHEET GENERATOR STILL GETS THE ORIGINAL RECORD. The poster itself is English by recorded // decision, so only the card's label is localised — postersFor's result feeds the wall, while -// countrySheet resolves its own country entry from the same json by iso3. +// countrySheet (above) swaps the card back for the json's own record, by id, before generating. // The i18n locale REF is read, not a snapshot, so a runtime language switch renames the cards. function localisedPoster(rec) { const locale = i18nLocale.value || 'en' diff --git a/public/dx-maps/doxa-maps-spa/manifest.json b/public/dx-maps/doxa-maps-spa/manifest.json index af9fbbb31..7529dc789 100644 --- a/public/dx-maps/doxa-maps-spa/manifest.json +++ b/public/dx-maps/doxa-maps-spa/manifest.json @@ -1126,7 +1126,7 @@ "bundle": "regions-dashboard", "scriptUrl": "./regions-dashboard/regions-dashboard.js", "output": "dx-maps/regions-dashboard/regions-dashboard.js", - "integrity": "sha384-/uFI1EDUJJJ3IlToqOlEUndMNJb/1IEFrHgTLLffP0AFue9fkSaztIsUIEUWqVc4", + "integrity": "sha384-hIUTzqQqUo+Lqydr13eUniRDAEG+FAm3tVh+AH5T16BaudTfWtBCTv+d3Ja810vf", "elements": [ "regions-dashboard" ], @@ -1149,8 +1149,8 @@ "scriptUrl": "./regions-dashboard/regions-dashboard.js", "embed": { "iframe": "", - "script": "\n\n\n\n\n\n", - "scriptMapbox": "\n\n\n\n\n\n" + "script": "\n\n\n\n\n\n", + "scriptMapbox": "\n\n\n\n\n\n" } }, { @@ -1166,7 +1166,7 @@ "scriptUrl": "./regions-dashboard/regions-dashboard.js", "embed": { "iframe": "", - "script": "\n\n\n" + "script": "\n\n\n" } }, { @@ -1182,8 +1182,8 @@ "scriptUrl": "./regions-dashboard/regions-dashboard.js", "embed": { "iframe": "", - "script": "\n\n\n\n\n\n", - "scriptMapbox": "\n\n\n\n\n\n" + "script": "\n\n\n\n\n\n", + "scriptMapbox": "\n\n\n\n\n\n" } } ] diff --git a/public/dx-maps/manifest.json b/public/dx-maps/manifest.json index af9fbbb31..7529dc789 100644 --- a/public/dx-maps/manifest.json +++ b/public/dx-maps/manifest.json @@ -1126,7 +1126,7 @@ "bundle": "regions-dashboard", "scriptUrl": "./regions-dashboard/regions-dashboard.js", "output": "dx-maps/regions-dashboard/regions-dashboard.js", - "integrity": "sha384-/uFI1EDUJJJ3IlToqOlEUndMNJb/1IEFrHgTLLffP0AFue9fkSaztIsUIEUWqVc4", + "integrity": "sha384-hIUTzqQqUo+Lqydr13eUniRDAEG+FAm3tVh+AH5T16BaudTfWtBCTv+d3Ja810vf", "elements": [ "regions-dashboard" ], @@ -1149,8 +1149,8 @@ "scriptUrl": "./regions-dashboard/regions-dashboard.js", "embed": { "iframe": "", - "script": "\n\n\n\n\n\n", - "scriptMapbox": "\n\n\n\n\n\n" + "script": "\n\n\n\n\n\n", + "scriptMapbox": "\n\n\n\n\n\n" } }, { @@ -1166,7 +1166,7 @@ "scriptUrl": "./regions-dashboard/regions-dashboard.js", "embed": { "iframe": "", - "script": "\n\n\n" + "script": "\n\n\n" } }, { @@ -1182,8 +1182,8 @@ "scriptUrl": "./regions-dashboard/regions-dashboard.js", "embed": { "iframe": "", - "script": "\n\n\n\n\n\n", - "scriptMapbox": "\n\n\n\n\n\n" + "script": "\n\n\n\n\n\n", + "scriptMapbox": "\n\n\n\n\n\n" } } ] diff --git a/public/dx-maps/regions-dashboard/region-dashboards/index.html b/public/dx-maps/regions-dashboard/region-dashboards/index.html index 69075ada8..a5694a2b4 100644 --- a/public/dx-maps/regions-dashboard/region-dashboards/index.html +++ b/public/dx-maps/regions-dashboard/region-dashboards/index.html @@ -70,7 +70,7 @@ - + - + - +