56 lines
2.0 KiB
Markdown
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.
|