doxa-maps/library/i18n
Doxa Maps 790d7d2400 Poster Sections: a plugin page that sets up <dxm-poster-section> and hands out the tag to embed it
A new bundle, plugin-designs/poster-sections, with one profile, Poster Sections.
A panel of choices (poster type from the registry at runtime, region or All
regions, language, posters per row, start collapsed) drives the library's
<dxm-poster-section> elements shown live below it, and Copy embed gives the
bundle script plus the exact tags for those choices, with absolute URLs so they
work on another site. The bundle also registers <dxm-poster-section>, so a site
that loads only poster-sections.js can place the tags.

Library: the element takes a columns attribute (posters per row, 1-5), passed
to the wall's existing columns prop; absent keeps today's default, so existing
importers are unchanged. New catalogue area posterSections in all 11 locales.

check:poster-sections (in gates:pre) reads every panel choice back through the
element's own attribute reader; its self-test proves a builder that drops
columns, drops collapsed, or repeats a region under All regions fails.
2026-10-02 08:16:40 +00:00
..
locales Poster Sections: a plugin page that sets up <dxm-poster-section> and hands out the tag to embed it 2026-10-02 08:16:40 +00:00
CATALOGUES.md Speak the reader's language on the UPG-100 map, its wall and the print HUD 2026-09-29 08:33:43 +00:00
index.js Comments name no internal hosts or teams; the A9 leaf-hint comment every page carries is neutral 2026-09-30 22:36:47 +00:00
keyedError.js Speak the reader's language on the UPG-100 map, its wall and the print HUD 2026-09-29 08:33:43 +00:00
README.md consolidate docs into documentation/ and deployment shells into deployment/ 2026-09-21 23:23:23 +00:00
useRegionsI18n.js A country map you can drop on one page, without the dashboard around it 2026-09-29 01:38:07 +00:00

library/i18n/ — the map's translations

One of the three customization seams (colors/, api/, i18n/). This one owns every user-facing string. Translations are one folder per locale, one JSON file per area, inlined at build time into a Vue I18n instance (one per <doxa-map>, so embeds don't bleed state).

  i18n/
  ┌───────────────────────────────┐
  │ index.js   ← engine, don't edit │
  │ locales/                        │
  │   en/  buttons.json legend.json …│  ← en is the source of truth + fallback
  │   es/ ar/ zh/ …  (same keys)     │  ← 11 shipped locales, drop in your own
  └───────────────────────────────┘
     filename → namespace:  buttons.json → $t('buttons.prayForThem')
  • 11 shipped locales; ar renders right-to-left (RTL_LOCALES).
  • Add a language by copying locales/en/ to locales/<code>/ — never by editing index.js (except adding the code to SUPPORTED_LOCALES).
  • Missing keys fall back to English silently.

Adding or overriding a locale? The full contract (locale matrix, checklist, integration) is in ../../documentation/architecture/i18n.md.