Sites that serve the Gulf and the wider Arabic-speaking market often need to work equally well in Arabic (right-to-left) and English (left-to-right). Mirroring the English layout is not enough: typography, forms, icons, numbers and search annotations all need attention. This checklist is meant for designers, developers and QA testers working on the same release.
Document and layout
- [ ] Set
langanddiron the<html>element:<html lang="ar" dir="rtl">for Arabic pages,<html lang="en" dir="ltr">for English. - [ ] Use CSS logical properties (
margin-inline-start,padding-inline-end,inset-inline-start,text-align: start) instead ofleftandright, so one stylesheet works in both directions. - [ ] Flex and grid layouts follow the writing direction automatically; check any component that uses absolute positioning or transforms.
- [ ] Mixed-direction strings (an English brand name inside an Arabic sentence, a phone number, a URL) are wrapped in elements with
dir="auto"or use<bdi>where the direction is unknown.
Typography
- [ ] Choose an Arabic typeface designed for screen use and test it at body sizes, not only in headlines.
- [ ] Arabic text usually needs a larger font size and line height than Latin text to be equally readable; do not reuse English values blindly.
- [ ] Do not apply letter-spacing to Arabic - it breaks the connected script.
- [ ] Avoid all-caps styling rules that only make sense for Latin scripts.
- [ ] Check that text truncation (
text-overflow: ellipsis) works from the correct side.
Icons and imagery
- [ ] Mirror directional icons: back/forward arrows, chevrons in breadcrumbs, progress indicators, "send" icons.
- [ ] Do not mirror icons that represent real-world objects or universal symbols: play buttons, clocks, checkmarks, logos, media controls.
- [ ] Carousels and sliders move in the reading direction; swipe gestures match.
- [ ] Photographs with text or directional composition may need separate crops, not a flipped image.
Forms
- [ ] Labels, help text and error messages align to the start edge.
- [ ] Inputs that hold Latin-only data (email, URL, some IDs) can be set to
dir="ltr"so characters do not appear reversed while typing. - [ ] Phone inputs accept both Western Arabic (0-9) and Eastern Arabic (٠-٩) digits, or clearly state which is expected - and the backend normalises them.
- [ ] Validation messages are translated, not just the labels.
- [ ] Date pickers respect the locale's first day of the week and reading direction.
Numbers, dates and currency
- [ ] Decide deliberately whether Arabic pages display Western Arabic or Eastern Arabic numerals, and apply it consistently. Use
Intl.NumberFormatandIntl.DateTimeFormatwith the right locale rather than hand-built strings. - [ ] Currency symbols and codes (AED, SAR, QAR, KWD, BHD, OMR) appear in the position readers expect for the locale.
Content and navigation
- [ ] The language switcher is visible on every page, labelled in the target language ("English" / "العربية"), and links to the equivalent page, not the homepage.
- [ ] Translations are written or reviewed by a native speaker, and adapted for the market - not machine-translated and published.
- [ ] Navigation order reads correctly from the start edge.
Search and metadata
- [ ] Each language version has its own URL (for example
/ar/...and/en/...), its own title and meta description, and a self-referencing canonical. - [ ]
hreflangannotations link each language version to the others and back to itself, and includex-defaultif there is a language selector page. - [ ] Structured data on Arabic pages is written in Arabic where it describes visible content.
QA pass
Test every key template in both languages on a real mobile device, with long real-world strings (long names, long company names, mixed Arabic/English addresses). Most RTL bugs only appear with real content.
Further reading
- W3C Internationalization: Structural markup and right-to-left text in HTML
- MDN: CSS logical properties and values
- Google Search Central: Localized versions of your pages
- For how research, wireframing and design systems come together in interface work, see the UI/UX design page from Gorilla Vibe.
Top comments (1)
Do you encode RTL behavior as icon metadata rather than mirroring at component level? Mixed libraries often contain directional and invariant glyphs in the same set.