Language & RTL Rules
English as master content
English as master content — documentation pending.
Complete
English is the canonical source. Arabic mirrors EN editorially — same structure, same intent, written natively (not translated). French is accepted as a route parameter and gracefully falls back to EN.
Why English is the master
- Tooling and developer workflow. — TypeScript field names, schema.org types, route segments, and analytics events are all in English. Keeping EN as the authoring source avoids a translation layer in the codebase.
- AEO and structured-data alignment. — Answer engines and AI crawlers index EN content first. Emitting EN as the canonical inLanguage on JSON-LD anchors the entity graph.
- AR is authored, not translated. — Arabic content is authored by a native MENA editorial voice that adapts metaphors, examples, and tone to the regional reading culture — not literal translation.
Dictionary contract
Every i18n entry in `core/i18n/dictionary.ts` follows the shape `{ en: string; ar: string; fr?: string }`. The EN field is required; AR is required; FR is optional. When FR is missing, the lookup gracefully falls back to EN — never throws, never shows the key.
