Pointof-CRM ships in 0 languages: English, Arabic and Urdu. Two of those read right to left, and supporting them properly took considerably more work than translating strings.
Translation is the easy half
Extracting copy into locale files is mechanical. You do it once, you keep it tidy, and a test tells you when a key is missing from one of the three. That part is solved.
The hard half is that a right-to-left layout is not a mirror image of a left-to-right one. It is the same layout expressed in directions rather than sides — and most CSS is written in sides.
Sides versus directions
Every `margin-left`, `padding-right`, `left: 0` and `translateX(20px)` in a codebase is an assumption that text flows one way. In an RTL layout each of them is wrong, and none of them will throw an error.
The fix is logical properties, applied consistently:
/* breaks in Arabic */
.card { margin-left: 12px; border-right: 1px solid; }
/* works in every direction */
.card { margin-inline-start: 12px; border-inline-end: 1px solid; }Animations need the same treatment. A marquee that translates negatively runs the wrong way in RTL; a sliding panel opens from the wrong edge. Those are the bugs that survive review, because the reviewer is reading in English.
The things nobody warns you about
- Numbers stay left-to-right inside right-to-left sentences. So do currency codes, email addresses and record IDs. Your date and money formatting has to know the difference.
- Icons that imply direction — arrows, chevrons, back buttons, progress lines — must flip. Icons that represent objects must not. A mirrored calendar icon looks broken.
- Fonts are not interchangeable. Latin faces have no Arabic coverage, so you are loading a second family and matching its optical weight to the first.
- Mixed-direction strings inside one line need explicit isolation, or punctuation jumps to the wrong end of the sentence.
Why bother
Because the alternative is what most CRMs do: ship an English product, add a language switcher that translates labels, and leave the layout untouched. The result is technically multilingual and genuinely unusable.
Sales teams in the Gulf and South Asia are not underserved because software cannot be translated. They are underserved because translating it properly is unglamorous work that rarely gets prioritised.