diff --git a/plugin-designs/gospel-resources/resources-map.vue b/plugin-designs/gospel-resources/resources-map.vue index cc1dc8579..9b5b9834e 100644 --- a/plugin-designs/gospel-resources/resources-map.vue +++ b/plugin-designs/gospel-resources/resources-map.vue @@ -76,6 +76,7 @@ import { applyPeopleGroupList } from '@map/lists/peopleGroupList.js' import { EN_MESSAGES } from '@map/i18n/index.js' import { useShadowStyles } from '@map/composables/useShadowStyles.js' import { addMapAttribution } from '@map/composables/useMapAttribution' +import { engineUiLocale } from '@map/composables/useMapInstance.js' // Map toolbar — canonical modular control rail (MapToolbar slot-wrapper + button // children). ThemeToggleButton is omitted: this profile's isDark is a read-only @@ -732,6 +733,16 @@ try { const isEnglish = (() => { try { return String(useI18n().locale.value || 'en').split('-')[0] === 'en' } catch { return true } })() +/* The reader's language as a bare tag, for the ENGINE's own control labels. Read the same way + isEnglish is, so the engine's chrome and ours can never disagree about who is reading. */ +const readerLang = () => { + try { return String(useI18n().locale.value || 'en') } catch { return 'en' } +} +/* A TRANSLATION WHERE ONE EXISTS, TODAY'S ENGLISH WHERE IT DOES NOT — never the key name. + t() falls back to the key when a catalogue has no entry, which on a `title` attribute would + put "gospel.legend.hnrTip" in a tooltip: worse than the English it replaced. This keeps the + English in the template until the key lands, and switches the moment it does. */ +const tOr = (key, english) => { const v = t(key); return v && v !== key ? v : english } const SE_KIND = { PDF: 'PDF', audio: 'audio', sab: 'app', study: 'study notes', viewer: 'read online' } const seKinds = (k) => (Array.isArray(k) ? k : []).map((x) => SE_KIND[x] || x).join(', ') @@ -1443,6 +1454,12 @@ onMounted(async () => { style: resolveNamedStyle(isDark.value ? 'ink' : 'paper', grProvider).style || (isDark.value ? 'mapbox://styles/mapbox/dark-v11' : 'mapbox://styles/mapbox/light-v11'), accessToken: mapboxToken.value, + /* THE ENGINE'S OWN STRINGS, IN THE READER'S LANGUAGE (rega row 34). This leaf calls + `new gl.Map` directly instead of going through useMapInstance, so it did not inherit + the locale map the shared composable passes — "Toggle attribution" and the canvas's + accessible name "Map" stayed English under ar while every string we own was Arabic. + Set at construction because that is the only time either engine reads it. */ + locale: engineUiLocale(readerLang()), /* A starting zoom is a guess about the canvas. It was 1.3, which framed the world while this leaf was running WITHOUT the engine's stylesheet; once mapbox-gl.css reached the shadow root the canvas sized correctly and the same 1.3 cut the visible @@ -1973,7 +1990,7 @@ useShadowStyles( diff --git a/public/dx-maps/doxa-maps-spa/manifest.json b/public/dx-maps/doxa-maps-spa/manifest.json index 8957436ea..2884cfb67 100644 --- a/public/dx-maps/doxa-maps-spa/manifest.json +++ b/public/dx-maps/doxa-maps-spa/manifest.json @@ -578,7 +578,7 @@ "bundle": "gospel-resources", "scriptUrl": "./gospel-resources/gospel-resources.js", "output": "dx-maps/gospel-resources/gospel-resources.js", - "integrity": "sha384-4BpQjymqFNDY37MkPyDKIv9qW7LWezKuwSYw9NrPIc96Irp3jmMfkiy0I9RuXMCx", + "integrity": "sha384-uYb00jB2wp6U3UUda8LJsA79kAHuNP7Tcq/nWIsL4yNPbKMy6Dqa1GLW1y/yzH99", "elements": [ "gospel-resources-map" ], @@ -598,7 +598,7 @@ "scriptUrl": "./gospel-resources/gospel-resources.js", "embed": { "iframe": "", - "script": "\n\n" + "script": "\n\n" } }, { @@ -612,7 +612,7 @@ "scriptUrl": "./gospel-resources/gospel-resources.js", "embed": { "iframe": "", - "script": "\n\n" + "script": "\n\n" } }, { @@ -626,7 +626,7 @@ "scriptUrl": "./gospel-resources/gospel-resources.js", "embed": { "iframe": "", - "script": "\n\n\n\n" + "script": "\n\n\n\n" } }, { @@ -640,7 +640,7 @@ "scriptUrl": "./gospel-resources/gospel-resources.js", "embed": { "iframe": "", - "script": "\n\n" + "script": "\n\n" } }, { @@ -654,7 +654,7 @@ "scriptUrl": "./gospel-resources/gospel-resources.js", "embed": { "iframe": "", - "script": "\n\n\n\n" + "script": "\n\n\n\n" } } ] diff --git a/public/dx-maps/gospel-resources/charts/index.html b/public/dx-maps/gospel-resources/charts/index.html index 0cce96c82..71fcbf39a 100644 --- a/public/dx-maps/gospel-resources/charts/index.html +++ b/public/dx-maps/gospel-resources/charts/index.html @@ -32,7 +32,7 @@ - + - + - + - + - + \n\n" + "script": "\n\n" } }, { @@ -612,7 +612,7 @@ "scriptUrl": "./gospel-resources/gospel-resources.js", "embed": { "iframe": "", - "script": "\n\n" + "script": "\n\n" } }, { @@ -626,7 +626,7 @@ "scriptUrl": "./gospel-resources/gospel-resources.js", "embed": { "iframe": "", - "script": "\n\n\n\n" + "script": "\n\n\n\n" } }, { @@ -640,7 +640,7 @@ "scriptUrl": "./gospel-resources/gospel-resources.js", "embed": { "iframe": "", - "script": "\n\n" + "script": "\n\n" } }, { @@ -654,7 +654,7 @@ "scriptUrl": "./gospel-resources/gospel-resources.js", "embed": { "iframe": "", - "script": "\n\n\n\n" + "script": "\n\n\n\n" } } ]