---
path: /mawu-studio/localization
surface: studio
domain: mawu
auth: signed-in + creator
source: apps/oshun/web/src/app/mawu-studio/localization/page.tsx
status: walked
last_walked: '2026-06-03 automated runtime probe (Playwright headless) — prod build + mock BFF; render, HTTP 200, server-rendered <h1>, 0 page errors verified. Evidence: WALKTHROUGH/results/walkthrough-runtime-probe-2026-06-03.md'
v1_scope: out-of-v1
---

# Mawu Studio — Localization (V7)

## Purpose

Reviews the V7 **Mawu** launch-locale catalog filtering, per-locale moderation
evidence, and regional governance localization. Tracks catalog / Mawu Studio /
governance / platform-UI coverage across the eight `@oshun/i18n` launch locales,
and surfaces which catalog content is browser-visible per locale (only
`approved` content shows in the Abundantia browser). **Out of the V1 feature
map** — a V7 surface that ships in `apps/oshun/web` (documented here for an
exhaustive route inventory).

## Entry points

- **Direct URL / bookmark** — `/mawu-studio/localization` (signed-in creator)
- **Studio shell nav** — `active="studio"` (shortcut `6`)
- **From Accessibility workspace** — the "Localization" footer link on
  `/mawu-studio/accessibility`

## Layout regions

- **Header** (`aria-labelledby="mawu-localization-title"`) — eyebrow "V7 launch
  locale set", H1 "Mawu Studio Localization", summary
- **Metrics** (`aria-label="Localization status"`) — Locales
  (`OSHUN_LAUNCH_LOCALES.length/8`), Surfaces (4/4), Moderation (per locale),
  Governance (regional)
- **Controls** (`aria-label="Localization controls"`) — Catalog-locale select +
  Governance-region select
- **Body grid**
  - **Abundantia Browser** (`data-localized-catalog-browser`) — catalog entries
    approved for the chosen locale (title, kind tag, summary, creator, locale,
    moderation status)
  - **Governance Proposal** — regionalized proposal text for the chosen region
- **Launch Surface Coverage** — 4 surface rows (Catalog / Mawu Studio /
  Governance / Platform UI) each `N/8`
- **Per-Locale Moderation** (`aria-label="Per-locale moderation evidence"`) —
  every catalog content row's locale / status / moderation-report id

## States

- [ ] **Loading / Error / Offline** — N/A: catalog, governance, and coverage
      data are in-bundle constants (`CATALOG_ITEMS`, `GOVERNANCE_TRANSLATIONS`,
      `SURFACE_COVERAGE`); no client network read
- [ ] **Hydration** — `data-hydrated` flips to `true` after the mount effect
- [ ] **Catalog locale = es-US (default)** — `data-catalog-filter-locale`;
      browser shows only entries with a matching `locale` **and**
      `moderationStatus === 'approved'`
- [ ] **Catalog locale with a pending entry** — e.g. `pt-BR` Harbor Night is
      `pending`, so it is filtered OUT of the browser but still appears in the
      Per-Locale Moderation grid with status `pending`
- [ ] **Empty catalog result** — when no approved entry matches the locale, the
      entry list renders empty with the count "0 locale-approved entries"
- [ ] **Governance region = europe (default)** — `data-governance-region`;
      proposal renders the region's locale text (`REGION_OPTIONS[region]`)
- [ ] **Governance region with no translation** — the proposal `<article>` is
      omitted (null guard)
- [ ] **Gated** — signed-in creator (shell); no V1 BFF policy (out-of-v1)
- [ ] **Standalone PWA** — renders within the shell

## Interactions

- [ ] **Catalog locale** (select, `data-catalog-locale-filter`) — options are
      the 8 `OSHUN_LAUNCH_LOCALES`
      (`<locale> - <LAUNCH_LOCALE_LABELS[locale]>`); filters the Abundantia
      browser entries (approved-only). Wires both `onInput` and `onChange`
  - Function: sets `catalogLocale`; recomputes `catalogEntries`
  - Keyboard: native select semantics; screen reader announces "Catalog locale"
- [ ] **Governance region** (select, `data-governance-region-select`) — options
      are the 5 regions (`north-america / europe / mena / japan / brazil`) each
      shown as `<region> - <locale>`
  - Function: sets `governanceRegion`; recomputes the governance proposal text
- [ ] **Catalog / moderation / coverage lists** — read-only; no row controls

## Data & contracts

- **Reads**: in-bundle `CATALOG_ITEMS`, `GOVERNANCE_TRANSLATIONS`,
  `SURFACE_COVERAGE`, `REGION_OPTIONS`; launch locales + labels from
  `@oshun/i18n` (`OSHUN_LAUNCH_LOCALES`, `LAUNCH_LOCALE_LABELS`)
- **Writes**: _None on the wire._ The V7 catalog/moderation/governance BFF
  wiring is a future-arc concern; moderation report ids are deterministic
  (`kuanyin-locale:<locale>:<region>`,
  `kuanyin-governance-locale:<locale>:<region>`)
- **Realtime**: _None._
- **Caching**: client component; SSR shell only
- **Auth/role check**: session (signed-in creator); no V1 BFF policy (out-of-v1)

## Cross-references

- Sibling V7 surface:
  [`mawu-studio-accessibility.md`](./mawu-studio-accessibility.md)
- V6 sibling future studio: [`egbe-studio.md`](./egbe-studio.md)
- Related V1 governance:
  [`../governance/studio-internationalization-localization.md`](../governance/studio-internationalization-localization.md)
- Spec: `V7/V7_features.md`, `V7/V7_ARCHITECTURE.md`
- Component source:
  `apps/oshun/web/src/components/mawu/MawuStudioLocalizationWorkspace.tsx`

## Open questions / known gaps

- [ ] Catalog, governance, and coverage data are in-bundle constants. Confirm
      the V7 BFF endpoints that will serve the real localized catalog +
      moderation evidence (the `kuanyin-*` report ids suggest a Kuan-yin
      moderation service) before this leaves V7 preview.
- [ ] `OSHUN_LAUNCH_LOCALES.length/8` is rendered as the metric; confirm the
      launch locale set stays at 8 so the "/8" denominator is correct.
