TorbatYar/docs/commercial-i18n-report.md

56 lines
2.0 KiB
Markdown

# Commercial i18n Report
**Date:** 2026-07-29
**Status:** PASS
## Single translation layer
Commercial translations are centralized in `frontend/modules/commercial/presentation.ts`.
The layer owns:
- Registry presentation dictionary
- Registry aliases
- Field labels and field groups
- Status, visibility, lifecycle, pricing-model, interval, and currency labels
- Entity reference resolution
- Product, bundle, pricing, plan, and capability naming
- Money and date formatting
- Business descriptions
- Recommendation reasons
- Friendly error normalization
- Technical-field suppression
- Nested value presentation
No component-level registry label dictionaries remain. Admin resource bindings import the presentation definition instead of duplicating copy.
## Presentation rules
- Persian metadata supplied by the runtime is preserved.
- Known technical identifiers are converted into business names.
- English runtime descriptions are replaced by the Persian registry description.
- Unknown technical enum values are never echoed to users.
- Internal identifiers, stable codes, route fields, raw payloads, and trace fields are suppressed.
- Arrays render as chips or structured cards.
- Nested objects render as labeled expandable sections.
## Quality-gate results
| Gate | Result |
| --- | --- |
| `Commercial Item` | PASS — not visible |
| `گزینه تجاری` | PASS — removed |
| `Unknown Item` / visible `Unknown` | PASS — not visible |
| Raw registry identifier examples | PASS — not visible |
| Direct `display_name` rendering | PASS — all routed through presentation resolver |
| Raw `stable_code` / payload rendering | PASS — suppressed |
| `[object Object]` | PASS — recursive renderer |
| English visible copy in Commercial JSX | PASS |
| TypeScript | PASS |
| Scoped ESLint | PASS, zero warnings |
## Notes
Technical terms may still exist in TypeScript types, internal adapter variables, API bindings, comments, and lookup keys. These are not presentation output and are required for runtime integration.