Arabic-First Software Is Not Translation
Four hundred million people read right-to-left, and most software treats them like a locale file bolted on at the end. Field notes from building bilingual business apps.
Yousef Barakat
Frontend Team Lead
The first approval dashboard we built had a bug nobody filed: in Arabic, everything worked, and it still felt wrong. Numbers sat where numbers sat. Buttons did what buttons did. But the layout had been designed, in Figma, in English, with an Arabic string dropped into a shape drawn for a language that reads the other way. The interface was grammatically bilingual and spiritually monolingual. Users felt it before they could articulate it: the screen read like a translated document instead of a native one.
The physics of RTL
Right-to-left is not mirroring. Progress bars flow the other way — but clocks do not, and neither do media scrubbers, and neither does a video call. A “back” arrow points right, except when it points left, because arrows point where the reading came from, not where geometry says. Phone numbers stay LTR inside RTL text, which means a naive implementation will reverse a phone number into a number that rings in a different call center. None of this is hard individually. All of it is fatal in aggregate, and all of it is invisible on an English-only design board.
- Use logical CSS properties — margin-inline-start, not margin-left — and RTL stops being a bug class.
- Embed numerals in an LTR isolate so phone numbers and amounts never scramble.
- Design the Arabic screen first, once, on purpose. The English version gets better — constraints teach.
The deeper mistake
The deeper mistake is treating Arabic as a feature of the settings page. Four hundred million people, a demographic that is younger and faster-growing into digital tools than almost any on the planet, and the default posture of our industry is: English is the product, Arabic is the costume it wears on holidays. Trust is emotional; people make critical decisions in the language they argue with their families in. An app that makes a user switch languages to understand their own approval request is not a neutral tool with a localization bug. It is a product that has decided, silently, where its user’s comfort ranks.
We rebuilt that first dashboard from the Arabic side. Same components, same design system, but the primary design artifact — the thing designers looked at when they made decisions — was the RTL version, and the English one had to earn its place in it. The result was better in both languages: clearer hierarchies, calmer numbers, and a layout that stopped assuming where a sentence begins. This very website is built that way — you are reading the proof, whichever direction you chose.