Locales FR / ZH / AR Report
Locales FR / ZH / AR Report
Section titled “Locales FR / ZH / AR Report”Coverage
Section titled “Coverage”- Frontend leaf-key count:
en=913,fr=913,zh=913,ar=913 - Backend leaf-key count:
en=235,fr=235,zh=235,ar=235 - Placeholder mismatch check:
0mismatches forfr,zh, andarversusenin both frontend and backend - Note: the active
en.jsonbaseline on2026-04-23already contains913frontend leaf keys, so the older CX spec number887is stale for the current tree
Angle Markers
Section titled “Angle Markers”- No
<angle>review markers remain inapp/frontend/src/i18n/{fr,zh,ar}.json - No
<angle>review markers remain inapp/backend/app/i18n/{fr,zh,ar}.json
RTL Audit
Section titled “RTL Audit”- Replaced with logical properties:
app/frontend/src/styles/layout.css:left->inset-inline-startapp/frontend/src/styles/components.css:padding-left->padding-inline-startapp/frontend/src/components/Accordion.module.css:text-align: left->startapp/frontend/src/components/EmptyState.module.css:text-align: left->startapp/frontend/src/components/MetricCard.module.css:margin-left->margin-inline-startapp/frontend/src/components/SidebarPanel.module.css:left/padding-left->inset-inline-start/padding-inline-startapp/frontend/src/components/ToastSystem.module.css:right/border-left->inset-inline-end/border-inline-startapp/frontend/src/components/ResultsPanel.module.css:border-left*->border-inline-start*app/frontend/src/components/WizardDraftStep.module.css:margin-left->margin-inline-startapp/frontend/src/components/results/WarningsSection.module.css:border-left*->border-inline-start*
Left As Physical Coordinates
Section titled “Left As Physical Coordinates”app/frontend/src/components/ForestPlot.tsx: keptleft/rightinline positioning because they encode chart coordinates, not page directionapp/frontend/src/components/ComparisonDashboard/DistributionView.tsxapp/frontend/src/components/SequentialBoundaryChart.tsxapp/frontend/src/components/PowerCurveChart.tsxapp/frontend/src/components/PosteriorPlot.tsx
These remaining left/right hits are Recharts margin values or plot-coordinate positioning and were intentionally not converted to logical properties.
npm run test -- src/i18n.test.tsx src/test/a11y-locales.test.tsx src/test/a11y-rtl.test.tsxpassedsrc/test/a11y-rtl.test.tsxconfirmsdocument.documentElement.lang === "ar"anddocument.documentElement.dir === "rtl"axereported0critical/serious violations in the targetedde,es, andar+rtlswitcher renders- Vitest/jsdom still prints the known
HTMLCanvasElement.getContext()warning during axe runs; it does not fail the suite