# Plenary translations

The live PSWG route /pswg/dashboard/plenary imports
features/cdc-gpsf/plenary/dashboard/dashboard-screen.tsx, not the old PSWG mock
dialog. That same screen serves Ministry, CDC, CEFP and CDC G-PSF.

- PSWG / CDC / CEFP: Admin page dashboard_plenary.
- Ministry / CDC G-PSF: Admin page plenary_dashboard.
- title is the sidebar label; page_title is the independent page heading.
- 58 bilingual UI keys cover header, actions, filters, status cards, charts,
  legends, agency tooltip, export menus and unpublished/error notices.
- PlenaryTranslationProvider selects the module from the exact route segment.
  It passes its own dictionary into DashboardLabelsProvider for reused filters,
  summary cards and export controls. It never fetches Working Group labels.
- API: /translations/dictionary?module=pswg&page=dashboard_plenary&language=km
  (en for English). Missing/blank labels use local defaults. Refetch occurs on
  mount/window focus; switch back to the page after editing Admin labels.
- Business names and IDs remain in the business-data APIs.

Run from backend: npm run prisma:seed:plenary-translations
The full five-module seed also includes plenary-labels.seed.ts. Existing Admin
values are preserved on repeated runs.

## Reuse audit

Shared charts are also imported by CDC G-PSF progress-report draft/final
dashboards. They continue to receive their own labels through props; the agency
tooltip now respects those props too. No PSWG query was added inside charts.

PSWG Add Issue and Request Meeting navigate to their own feature pages, which
retain their own translation dictionaries. The old PSWG add-issue dialog is not
mounted by the live Plenary route. CDC's older add-issue dialog imports its
AgencyDisplay/IssueAttachmentField helpers; those unused-on-Plenary form
components were not changed or given a PSWG translation dependency.

Tests: backend prisma/seeds/translations/plenary.test.ts and frontend
features/pswg/plenary/plenary-translations.spec.tsx.
