Skip to content
lurno
All posts
Blog

Choosing an LMS that actually works in Arabic

An Arabic translation and a product built for right-to-left are different things. What breaks when direction comes last, and the hour-long test that finds it.

The Lurno teamAugmental11 min read

An LMS with an Arabic translation and an LMS built for right-to-left are different products, and a demo given in English will not tell you which one you are buying. Translation is a file of strings. Direction is a property of the layout, the icons, the date format, the sort order, the drag handles and the PDF renderer — none of which the string file touches. Ask every vendor for a login to the Arabic build, in Arabic, and press on the parts nobody demos.

Schools and academies across the Gulf and North Africa now buy bilingual by default: Arabic for learners and guardians, English or French for the systems team, one platform carrying both without either half feeling like a port. The failure mode is rarely a missing feature. It is a term report that prints a pupil's name backwards, and a head teacher who quietly stops trusting the system.

Translation is a file. Direction is the layout.

A translator can finish a string file in a fortnight and reviewing it is a screenshot pass. That work is real, and it is the easy half.

Direction touches every rule that says left or right, every icon that points somewhere, and every measurement taken from a container's left edge. Where it was a variable from the start, the root element carries `dir="rtl"` and the stylesheet uses logical properties — `margin-inline-start` rather than `margin-left` — so the interface mirrors itself and stays mirrored as screens are added. Where left and right are written into a thousand rules, Arabic is a refactor of every screen, which is why it gets scheduled and rescheduled.

Lurno

Direction as a variable: every screen laid out with logical start and end, so Arabic is a setting and the next feature ships mirrored on the day it ships.

Not this

An Arabic string file poured into a layout measured from the left edge, then patched screen by screen as complaints arrive.

Right-to-left (RTL) support

Not a translation. The interface reflected along the vertical axis — navigation, tables, form labels, progress bars, drawers, focus order — plus sentences that mix Arabic with Latin words and digits without breaking, numerals and calendars that match the country, Arabic-aware sorting and search, and documents that render Arabic as connected script. A product has it when direction was a variable from the start; it does not when Arabic was added to the string file.

Does an LMS support Arabic if it has an Arabic translation?

Not on its own. A translation gives you Arabic words in a left-to-right layout, which is about half the job. The other half is direction: the interface mirrored, icons pointing the correct way, punctuation landing at the right end of a sentence containing a Latin word or a number, numerals and calendars that match the country rather than the language, names that sort and search the way Arabic names sort, and PDFs that render Arabic as connected script. Ask which of those is done today, screen by screen.

What breaks when right-to-left arrives late

None of this is exotic. These are ordinary bug classes, and they turn up in roughly this order in every product that added Arabic afterwards.

The layout that only half flips

The page body mirrors and the shell does not. The sidebar stays left, the drawer slides in from the wrong edge, a progress bar fills from the left so a learner three-quarters through reads as barely started. A table's header row mirrors while its cells do not, putting every value under the wrong heading — the worst kind, because it looks like data rather than layout. Then the small ones: an ellipsis at the wrong end of a truncated string, tooltips on the wrong side, a tab order that no longer follows the eye.

Icons that point the wrong way

Some icons must mirror and some must not, and the rule is about meaning. Mirror what indicates travel through content: back and forward arrows, next and previous chevrons, reply, indent, the caret that opens a tree. Do not mirror what depicts an object or a convention: a clock still runs clockwise, a tick is still a tick, play does not point left in Arabic. Half-doing it is worse than not starting — a back arrow pointing right beside a next arrow pointing right cannot be read as a pair.

Sentences that run in two directions

Almost no real Arabic sentence in an LMS is purely Arabic. It holds a course code, a version number, a file name, a score or an English product name. The Unicode bidirectional algorithm decides where each run goes; it does well on properly marked-up text and badly on strings a developer glued together. The symptoms are recognisable: a full stop at the far left, brackets swapping so the closing bracket opens the phrase, a version number reordered.

The fix is structural rather than clever — one translated string with a placeholder, and the value isolated so the algorithm treats it as a unit.

an Arabic sentence with one Latin value inside it

  concatenated   part1 + fileName + "."
                 → value and full stop land on the wrong side,
                   and only for some values

  interpolated   t("upload.done", { file })     one string, one placeholder
  isolated       <bdi>{{file}}</bdi>            or unicode-bidi: isolate

  where to look  learner names, file names, course codes, scores —
                 anything dropped into a translated sentence

Digits, dates and the week

Arabic is not one locale. Egypt and much of the Gulf write Eastern Arabic-Indic digits (٠١٢٣٤); Morocco, Algeria and Tunisia write the digits this sentence uses, so a platform with a single `ar` locale is wrong somewhere — and it shows on a grade a parent reads aloud over the phone. Saudi institutions often need Hijri dates beside Gregorian ones in the same report. The working week is a per-country setting: the United Arab Emirates moved its public sector to a Saturday–Sunday weekend in 2022, while Saudi Arabia and Egypt keep Friday–Saturday. Ramadan is the sharpest test, because the school day shortens for a month and every scheduled reminder has to move with it.

A class list sorted by codepoint is not sorted alphabetically. The alef variants (ا أ إ آ) sort apart, so أحمد and احمد land in different halves of the same register. Taa marbuta (ة) and haa (ه) at the end of a name are typed interchangeably, as are yaa (ي) and alef maqsura (ى), depending on the keyboard. Search needs the same normalisation, so a registrar typing احمد finds أحمد — otherwise staff decide the search box is broken and go back to the spreadsheet. And many Arabic names are a chain of given name, father, grandfather and family name, which a form with two fields quietly truncates.

Anything you can drag

Dragging a module into place in a course, or a card on a dashboard, is arithmetic on x coordinates. In right-to-left the sign flips, and a library deriving a drop index from the distance to the container's left edge drops the item at the opposite end. Browsers historically disagreed about the sign of `scrollLeft` in right-to-left containers, so a horizontal grid can scroll to the wrong place in one browser only. And the left arrow key should now move an item forwards. Whether a vendor got this right tells you whether an Arabic speaker ever built a course in the product — you cannot see it in screenshots.

PDFs and certificates

This fails last and most publicly, because the artefact leaves the building. Arabic is cursive: each letter takes a different form depending on its neighbours, and lam followed by alef becomes one ligature. Drawing it needs a font containing Arabic glyphs, a shaping engine that picks the right form for each position, and bidirectional reordering before anything is placed. A pipeline that draws characters one at a time in storage order gives the classic result — a name in disconnected letters, in reverse — instantly recognisable to every Arabic reader and to nobody on the buying committee. Certificates add a layer: a name field sized for a Latin name, and a verification page that renders left-to-right though the certificate does not.

Why does Arabic text come out backwards or disconnected in a PDF?

Because the renderer is drawing characters rather than shaping text. Arabic letters change form according to their neighbours and some pairs combine into one ligature, so correct output needs three things: a font containing Arabic glyphs, a shaping engine that selects the right contextual form for each letter, and bidirectional reordering applied before the glyphs are placed. Pipelines that place characters one by one in storage order skip the last two. It is a property of the document pipeline rather than the interface, which is why a platform can look right in Arabic on screen and still produce an unusable certificate.

The words a school uses are not the vendor's to choose

Teacher, guardian and class read like fixed terms. They are local vocabulary, and they vary by country, curriculum and sector as much as by language.

  • Guardian. In much of the Gulf the adult responsible for a pupil is ولي الأمر, the legal formulation, and a school will insist on it. A British-curriculum school in the same city says parent.
  • Class. A year group in one system, a timetabled section (شعبة) in another, a homeroom in an American-curriculum school, a cohort at a training provider.
  • Teacher. معلم, مدرس and أستاذ carry different registers and seniority. A training provider says trainer and trainee. A French-system school in Morocco says enseignant on the French side and something else on the Arabic side, for the same person.

These vary along two axes at once — by language and by organisation — and a translation file handles only the first: one Arabic word per key, chosen by the vendor's translator, identical for everyone on that release. So when a school asks for guardian instead of parent, a string-file product has three answers and all are bad: change it for everyone, fork the locale file for one customer, or say no.

Ask instead for terminology as configuration — a per-organisation label for each role and grouping noun, set independently in each language, applied everywhere the term appears. The nav label is the easy part. The tell of a shallow version is a menu that says guardian while the notification email, the report header and the exported PDF still say parent.

Can an LMS use different words for teacher and guardian in different countries?

Only if the terms are configuration rather than translation. A translation file holds one Arabic word per key for every customer on the release, so two schools on the same platform cannot have different vocabulary from it. Local terminology needs a per-organisation setting for each role and grouping noun, held separately per language and applied across the interface, notifications, reports and documents. To test it, change one term and go looking for the old one in an email and a PDF.

A test you can run in an hour

Do not ask whether the platform supports Arabic. Everyone says yes and everyone means something different. Ask for a login to an Arabic tenant with real content and real names in it, then run this.

  1. Switch to Arabic and reload. Does the whole shell mirror, or only the middle of the page?
  2. Open a form. Check the labels, the required-field marker, the validation message, and a string too long for its box.
  3. Find a sentence containing a Latin word or a number. Is the punctuation at the correct end?
  4. Sort a list of Arabic names. Do names beginning with أ and ا sit together? Now search for one typed without the hamza.
  5. Enrol a learner whose legal name has four parts, and see what the form keeps.
  6. Drag a module into a new position in a course. Then do it again with the keyboard.
  7. Generate a certificate for a learner with an Arabic name, open the PDF on a phone, then open its verification page.
  8. Change one term — parent to guardian — then find where the old word survives.
  9. Give the login to an Arabic-speaking colleague who was not in the meeting, and watch them work for twenty minutes without help.

Can a vendor add right-to-left support later?

Yes, and it is larger work than it sounds: revisiting the layout rules on every screen, auditing every directional icon, isolating every value interpolated into a translated string, and changing the document pipeline so PDFs shape Arabic correctly. Vendors do finish it. What matters is the schedule and the definition — ask which screens are mirrored today, whether new features ship mirrored or get patched afterwards, and what supported means for PDFs. A commitment with no named release is a commitment to try.

Where we stand

We build one of these platforms, so weigh this section accordingly. Lurno ships in four product languages — English, Arabic, French and Italian — with full right-to-left for Arabic: the interface mirrors, not only the strings. That is a fact rather than an argument. The argument is that you should check it, and everyone else's, with the hour above rather than with a feature table.

Bilingual groups hit two problems on the same day: direction and identity. A group running an Arabic-medium school and an English-medium one wants each to look like itself — its own logo, colours, login page and domain — which is white-label branding rather than a language setting. The school groups page sets out how the two fit together when one platform carries several schools. If certificates leave your building with learners' names on them, ask about the document pipeline in Arabic before you sign.

The reason to be strict is not aesthetics. A platform that half works in Arabic pushes everyone back into the language of the systems team, and the learners and guardians it was bought for stop opening it. That failure is quiet, it takes a term to reach any report, and no feature list predicts it.