Map controls: prayer-walk-planner (under fullscreen), gospel-internet (the map and the language tree, the board's default view), country-posters (the country map, its entry profile) and all-people-groups get the library HelpButton with hosted. Own bars, where there is no control column: the Wall (after the Bless/Social toggle), the PPLR hub (the end of its view bar) and the vision card (its top corner, at the end of the reading direction so Arabic mirrors it) use useHostedHelp. The vision card's label is the library's own "About this map" in each of the eleven locales, copied into vision.json rather than translated again. UPG Neighbor is left as it is: its bar already has an About button that opens the full explainer. Each "?" stays hidden until a host marks its pane, so nothing changes until the app answers. |
||
|---|---|---|
| .. | ||
| locales | ||
| index.js | ||
| README.md | ||
| useRegionsI18n.js | ||
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;
arrenders right-to-left (RTL_LOCALES). - Add a language by copying
locales/en/tolocales/<code>/— never by editingindex.js(except adding the code toSUPPORTED_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.