Naar de inhoud
Alle berichten
Blog

Een LMS kiezen dat werkelijk werkt in het Arabisch

Een Arabische vertaling en een product dat voor rechts-naar-links is gebouwd zijn twee verschillende dingen. Wat er breekt als richting het laatst komt, en de test van een uur die dat vindt.

The Lurno teamAugmental12 min lezen

Een LMS met een Arabische vertaling en een LMS dat voor rechts-naar-links is gebouwd zijn verschillende producten, en een demo in het Engels vertelt u niet welke van de twee u koopt. Vertaling is een bestand met teksten. Richting is een eigenschap van de indeling, de iconen, het datumformaat, de sorteervolgorde, de sleepgrepen en de PDF-renderer — en het tekstbestand raakt daar niets van. Vraag elke leverancier om een login voor de Arabische build, in het Arabisch, en druk door op de onderdelen die niemand demonstreert.

Scholen en academies in de Golf en Noord-Afrika kopen inmiddels standaard tweetalig in: Arabisch voor cursisten en verzorgers, Engels of Frans voor het systeembeheerteam, één platform dat beide draagt zonder dat een van de helften als een overzetting aanvoelt. Het faalt zelden op een ontbrekende functie. Het faalt op een schoolrapport dat de naam van een leerling omgekeerd afdrukt, en op een schoolleider die het systeem stilletjes niet meer vertrouwt.

Vertaling is een bestand. Richting is de indeling.

Een vertaler kan een tekstbestand in twee weken afronden, en het nakijken is een ronde langs screenshots. Dat werk is echt, en het is de makkelijke helft.

Richting raakt elke regel die links of rechts zegt, elk icoon dat ergens heen wijst, en elke maat die vanaf de linkerrand van een container wordt genomen. Waar het vanaf het begin een variabele was, draagt het rootelement `dir="rtl"` en gebruikt de stylesheet logische eigenschappen — `margin-inline-start` in plaats van `margin-left` — zodat de interface zichzelf spiegelt en gespiegeld blijft naarmate er schermen bij komen. Waar links en rechts in duizend regels zijn vastgelegd, is Arabisch een refactor van elk scherm, en daarom wordt het ingepland en opnieuw ingepland.

Lurno

Richting als variabele: elk scherm ingedeeld met een logisch begin en einde, zodat Arabisch een instelling is en de volgende functie gespiegeld wordt opgeleverd op de dag dat ze wordt opgeleverd.

Not this

Een Arabisch tekstbestand gegoten in een indeling die vanaf de linkerrand is gemeten, en daarna scherm voor scherm gerepareerd naarmate de klachten binnenkomen.

Ondersteuning voor rechts-naar-links (RTL)

Geen vertaling. De interface gespiegeld langs de verticale as — navigatie, tabellen, formulierlabels, voortgangsbalken, uitschuifpanelen, focusvolgorde — plus zinnen die Arabisch met Latijnse woorden en cijfers mengen zonder te breken, cijfers en kalenders die bij het land passen, sorteren en zoeken die het Arabisch kennen, en documenten die Arabisch als verbonden schrift weergeven. Een product heeft het wanneer richting vanaf het begin een variabele was; het heeft het niet wanneer Arabisch aan het tekstbestand is toegevoegd.

Ondersteunt een LMS Arabisch als het een Arabische vertaling heeft?

Op zichzelf niet. Een vertaling geeft u Arabische woorden in een links-naar-rechts-indeling, en dat is ongeveer de helft van het werk. De andere helft is richting: de interface gespiegeld, iconen die de goede kant op wijzen, leestekens die op het juiste uiteinde landen in een zin met een Latijns woord of een getal erin, cijfers en kalenders die bij het land passen en niet bij de taal, namen die sorteren en zoeken zoals Arabische namen sorteren, en PDF's die Arabisch als verbonden schrift weergeven. Vraag welke daarvan vandaag klaar zijn, scherm voor scherm.

Niets hiervan is exotisch. Dit zijn gewone soorten bugs, en ze duiken in ongeveer deze volgorde op in elk product dat Arabisch achteraf heeft toegevoegd.

De indeling die maar half omklapt

De inhoud van de pagina spiegelt en de schil niet. De zijbalk blijft links staan, het uitschuifpaneel komt van de verkeerde rand binnen, een voortgangsbalk vult vanaf links, zodat een cursist die driekwart klaar is er nauwelijks begonnen uitziet. De kopregel van een tabel spiegelt terwijl de cellen dat niet doen, waardoor elke waarde onder de verkeerde kop komt te staan — de ergste soort, want het ziet eruit als data en niet als indeling. Daarna de kleine dingen: een beletselteken aan het verkeerde uiteinde van een afgekapte tekst, tooltips aan de verkeerde kant, een tabvolgorde die het oog niet meer volgt.

Iconen die de verkeerde kant op wijzen

Sommige iconen moeten spiegelen en andere niet, en de regel gaat over betekenis. Spiegel wat beweging door content aangeeft: pijlen voor terug en vooruit, chevrons voor volgende en vorige, beantwoorden, inspringen, het driehoekje dat een boom openklapt. Spiegel niet wat een voorwerp of een conventie afbeeldt: een klok loopt nog steeds met de wijzers mee, een vinkje blijft een vinkje, afspelen wijst in het Arabisch niet naar links. Het half doen is erger dan er niet aan beginnen — een terugpijl die naar rechts wijst naast een volgendepijl die naar rechts wijst, laat zich niet als paar lezen.

Zinnen die twee kanten op lopen

Bijna geen enkele echte Arabische zin in een LMS is puur Arabisch. Er zit een cursuscode in, een versienummer, een bestandsnaam, een score of een Engelse productnaam. Het bidirectionele algoritme van Unicode bepaalt waar elk stuk terechtkomt; het doet dat goed bij correct gestructureerde tekst en slecht bij teksten die een ontwikkelaar aan elkaar heeft geplakt. De symptomen zijn herkenbaar: een punt uiterst links, haakjes die wisselen zodat het sluithaakje de zin opent, een versienummer in de verkeerde volgorde.

De oplossing is structureel en niet slim — één vertaalde tekst met een placeholder, en de waarde geïsoleerd zodat het algoritme haar als één geheel behandelt.

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

Cijfers, datums en de week

Arabisch is niet één locale. Egypte en een groot deel van de Golf schrijven Oost-Arabische cijfers (٠١٢٣٤); Marokko, Algerije en Tunesië schrijven de cijfers die deze zin gebruikt, dus een platform met één enkele `ar`-locale zit ergens fout — en dat valt op bij een cijfer dat een ouder door de telefoon voorleest. Saoedische instellingen hebben vaak Hidjri-datums naast Gregoriaanse nodig in hetzelfde rapport. De werkweek is een instelling per land: de Verenigde Arabische Emiraten verplaatsten het weekend van de publieke sector in 2022 naar zaterdag–zondag, terwijl Saoedi-Arabië en Egypte vrijdag–zaterdag aanhouden. Ramadan is de scherpste test, want de schooldag wordt een maand lang korter en elke ingeplande herinnering moet mee verschuiven.

Sorteren en zoeken

Een klassenlijst die op codepunt is gesorteerd, is niet alfabetisch gesorteerd. De alif-varianten (ا أ إ آ) sorteren uit elkaar, dus أحمد en احمد belanden in verschillende helften van hetzelfde register. Taa marboeta (ة) en haa (ه) aan het eind van een naam worden door elkaar getypt, net als yaa (ي) en alif maqsoera (ى), afhankelijk van het toetsenbord. Zoeken heeft dezelfde normalisatie nodig, zodat iemand van de administratie die احمد typt أحمد vindt — anders besluit het personeel dat het zoekvak stuk is en gaat het terug naar de spreadsheet. En veel Arabische namen zijn een keten van eigen naam, vader, grootvader en familienaam, die een formulier met twee velden stilletjes afkapt.

Alles wat u kunt slepen

Een module op zijn plaats slepen in een cursus, of een kaart op een dashboard, is rekenen met x-coördinaten. In rechts-naar-links keert het teken om, en een bibliotheek die een drop-index afleidt uit de afstand tot de linkerrand van de container zet het item aan het tegenovergestelde uiteinde neer. Browsers waren het historisch oneens over het teken van `scrollLeft` in rechts-naar-links-containers, dus een horizontaal raster kan in één browser naar de verkeerde plek scrollen. En de pijltoets naar links moet een item nu vooruit verplaatsen. Of een leverancier dit goed heeft gedaan, vertelt u of er ooit een Arabischtalige een cursus in het product heeft gebouwd — u ziet het niet op screenshots.

PDF's en certificaten

Dit gaat als laatste mis en het meest in het openbaar, want het document verlaat het gebouw. Arabisch is verbonden schrift: elke letter krijgt een andere vorm afhankelijk van haar buren, en lam gevolgd door alif wordt één ligatuur. Om het te tekenen zijn een font met Arabische glyphs nodig, een shaping engine die per positie de juiste vorm kiest, en bidirectionele herordening voordat er iets wordt geplaatst. Een pijplijn die tekens één voor één in opslagvolgorde tekent, geeft het klassieke resultaat — een naam in losse letters, achterstevoren — direct herkenbaar voor elke Arabische lezer en voor niemand in de inkoopcommissie. Certificaten voegen een laag toe: een naamveld op maat van een Latijnse naam, en een verificatiepagina die links-naar-rechts wordt weergegeven terwijl het certificaat dat niet doet.

Waarom komt Arabische tekst omgekeerd of los uit een PDF?

Omdat de renderer tekens tekent in plaats van tekst te vormen. Arabische letters veranderen van vorm naargelang hun buren en sommige paren vallen samen tot één ligatuur, dus voor een correcte uitvoer zijn drie dingen nodig: een font met Arabische glyphs, een shaping engine die per letter de juiste contextuele vorm kiest, en bidirectionele herordening die wordt toegepast voordat de glyphs worden geplaatst. Pijplijnen die tekens één voor één in opslagvolgorde plaatsen, slaan de laatste twee over. Het is een eigenschap van de documentpijplijn en niet van de interface, en daarom kan een platform er op het scherm in het Arabisch goed uitzien en toch een onbruikbaar certificaat produceren.

De woorden die een school gebruikt, zijn niet aan de leverancier om te kiezen

Docent, verzorger en klas lezen als vaste termen. Het is lokale woordenschat, en die verschilt net zozeer per land, leerplan en sector als per taal.

  • Verzorger. In een groot deel van de Golf is de volwassene die verantwoordelijk is voor een leerling ولي الأمر, de juridische formulering, en een school zal daarop staan. Een school met een Brits curriculum in dezelfde stad zegt ouder.
  • Klas. In het ene systeem een leerjaar, in het andere een ingeroosterde groep (شعبة), een homeroom op een school met een Amerikaans curriculum, een cohort bij een opleider.
  • Docent. معلم, مدرس en أستاذ dragen verschillende registers en anciënniteit. Een opleider zegt trainer en deelnemer. Een school met een Frans systeem in Marokko zegt enseignant aan de Franse kant en iets anders aan de Arabische kant, voor dezelfde persoon.

Deze variëren langs twee assen tegelijk — per taal en per organisatie — en een vertaalbestand dekt alleen de eerste: één Arabisch woord per sleutel, gekozen door de vertaler van de leverancier, identiek voor iedereen op die release. Dus wanneer een school om verzorger vraagt in plaats van ouder, heeft een product met een tekstbestand drie antwoorden en zijn ze alle drie slecht: het voor iedereen wijzigen, het localebestand voor één klant afsplitsen, of nee zeggen.

Vraag in plaats daarvan om terminologie als configuratie — per organisatie een label voor elke rol en elk groeperingswoord, per taal afzonderlijk ingesteld, toegepast overal waar de term voorkomt. Het label in de navigatie is het makkelijke deel. Een oppervlakkige versie verraadt zich door een menu dat verzorger zegt terwijl de notificatiemail, de rapportkop en de geëxporteerde PDF nog steeds ouder zeggen.

Kan een LMS in verschillende landen andere woorden gebruiken voor docent en verzorger?

Alleen als de termen configuratie zijn en geen vertaling. Een vertaalbestand bevat één Arabisch woord per sleutel voor elke klant op die release, dus twee scholen op hetzelfde platform kunnen daaruit geen verschillende woordenschat krijgen. Lokale terminologie vraagt om een instelling per organisatie voor elke rol en elk groeperingswoord, per taal apart bewaard en toegepast in de interface, de notificaties, de rapporten en de documenten. Om het te testen: wijzig één term en ga daarna op zoek naar het oude woord in een e-mail en in een PDF.

Een test die u in een uur kunt doen

Vraag niet of het platform Arabisch ondersteunt. Iedereen zegt ja en iedereen bedoelt iets anders. Vraag om een login voor een Arabische tenant met echte content en echte namen erin, en loop dit dan af.

  1. Schakel over naar Arabisch en herlaad. Spiegelt de hele schil, of alleen het midden van de pagina?
  2. Open een formulier. Controleer de labels, het teken voor een verplicht veld, de validatiemelding, en een tekst die te lang is voor het veld waarin ze staat.
  3. Zoek een zin met een Latijns woord of een getal erin. Staat de interpunctie aan het juiste uiteinde?
  4. Sorteer een lijst met Arabische namen. Staan namen die met أ en ا beginnen bij elkaar? Zoek er nu een die zonder de hamza is getypt.
  5. Schrijf een cursist in wiens officiële naam uit vier delen bestaat, en kijk wat het formulier bewaart.
  6. Sleep een module naar een nieuwe positie in een cursus. Doe het daarna opnieuw met het toetsenbord.
  7. Genereer een certificaat voor een cursist met een Arabische naam, open de PDF op een telefoon, en open daarna de verificatiepagina ervan.
  8. Wijzig één term — ouder in verzorger — en zoek daarna waar het oude woord blijft staan.
  9. Geef de login aan een Arabischtalige collega die niet bij het gesprek was, en kijk twintig minuten toe hoe die zonder hulp werkt.

Kan een leverancier ondersteuning voor rechts-naar-links later toevoegen?

Ja, en het is groter werk dan het klinkt: de indelingsregels op elk scherm opnieuw langslopen, elk richtingsicoon nakijken, elke waarde die in een vertaalde tekst wordt ingevoegd isoleren, en de documentpijplijn wijzigen zodat PDF's Arabisch correct vormen. Leveranciers maken het wel degelijk af. Wat telt is de planning en de definitie — vraag welke schermen vandaag gespiegeld zijn, of nieuwe functies gespiegeld worden opgeleverd of achteraf worden gerepareerd, en wat ondersteund betekent voor PDF's. Een toezegging zonder benoemde release is een toezegging om het te proberen.

Waar wij staan

Wij bouwen zelf zo'n platform, dus weeg dit deel navenant. Lurno wordt geleverd in vier producttalen — Engels, Arabisch, Frans en Italiaans — met volledige ondersteuning voor rechts-naar-links in het Arabisch: de interface spiegelt, niet alleen de teksten. Dat is een feit en geen argument. Het argument is dat u het moet controleren, bij ons en bij ieder ander, met het uur hierboven en niet met een functietabel.

Tweetalige groepen lopen op dezelfde dag tegen twee problemen aan: richting en identiteit. Een groep met een Arabischtalige en een Engelstalige school wil dat elk eruitziet als zichzelf — een eigen logo, eigen kleuren, een eigen inlogpagina en een eigen domein — en dat is white-label branding en geen taalinstelling. De pagina over scholengroepen zet uiteen hoe die twee samenkomen wanneer één platform meerdere scholen draagt. Verlaten er certificaten met namen van cursisten erop uw gebouw, vraag dan naar de documentpijplijn in het Arabisch voordat u tekent.

De reden om streng te zijn is geen esthetiek. Een platform dat half werkt in het Arabisch duwt iedereen terug in de taal van het systeembeheerteam, en de cursisten en verzorgers voor wie het is gekocht openen het niet meer. Dat falen is stil, het duurt een periode voordat het in enig rapport opduikt, en geen enkele functielijst voorspelt het.