The question behind the term
A global rtl declaration fixes browser layout behavior but cannot decide hierarchy, icon meaning or spatial composition. Mechanical mirroring can invert a real process diagram or put the primary action in an awkward reading position.
A reviewable approach
Review navigation order, focus order, gesture direction, progress motion and anchored actions for each locale. Use bidi-safe markup for emails, identifiers and code, and test with actual Persian content at zoom and narrow widths.
- Set lang and dir on the server-rendered root
- Test keyboard order and screen-reader landmarks
- Use a Persian font with appropriate metrics
- Localize motion with meaning
The boundary to keep visible
Decorative asymmetry does not always need mirroring. Preserve causal meaning and accessibility before pursuing visual symmetry.
Test meaning across both directions
A back arrow should follow reading direction, but a diagram of a real data pipeline may need its causal direction preserved and its labels localized. Check keyboard focus order separately from visual order; both can look correct in a screenshot while behaving differently in use.
Use the actual Persian interface, not placeholder English, to test email addresses, identifiers, numerals and code within right-to-left sentences. Isolate the mixed-direction fragment with semantic markup and review punctuation at narrow widths and zoom. Persian font metrics and line height also deserve their own layout decisions.
References and further reading
Frequently asked questions
Should every interface element be mirrored for Persian?
No. Mirror directional controls when their meaning changes with reading direction; preserve the causal direction of a real process and localize its explanation.
