Arabic interfaces done properly
Mirroring the layout is the easy part. The parts that get missed are typography, numerals and the order of things that are not text.
Most software that claims to support Arabic supports mirroring: the layout flips, the sidebar moves, and the team declares it done. Then someone opens a payslip and the amounts read backwards, or a date range reverses, or a heading is set in a font that has no proper Arabic weights and renders as something flat and slightly wrong.
Typography is the first thing to get right, because it is the most visible and the least discussed. Arabic needs more line height than Latin at the same size — letters extend above and below the baseline far more — and negative letter-spacing, which flatters a Latin headline, damages Arabic script. Uppercase does not exist, so any style built on it silently does nothing.
Numbers are the second. An amount, a date or an employee ID stays left to right even inside a right-to-left sentence. Get this wrong and a salary figure can read as a different number entirely, which is the kind of error that destroys trust in everything else on the screen.
Third is what mirrors and what does not. A forward arrow points the other way in Arabic, because forward is the other way. A clock face does not. A logo does not. A play button does not. Mirroring everything is as wrong as mirroring nothing, just less obviously.
Finally, decide the direction on the server. If the page arrives in one direction and JavaScript corrects it after hydration, every user sees a flash of the wrong layout on every visit — and the users who notice it most are exactly the ones you built the Arabic interface for.