Digital products · Case study
Two languages. One experience.
English and Arabic side by side, each reading in its own direction, with pages the school edits itself and an online shop.
Situation
A private school in Abu Dhabi, from kindergarten to A-Level, talks to parents through its website: admissions, policies, fees and uniform.
Challenge
The school needed to serve parents in Arabic and English as equals, with admissions, fees and uniform online.
That meant the same site in either language, pages its own staff can edit, admissions enquiries that reach the right department, and a shop where parents pay fees and buy uniform by the method that suits them.
Our approach
We built both languages in as equals from the start, with pages the school edits itself.
The school talks to parents about admissions, policies, fees and uniform, in two languages. We recommended building both languages in as equals from the start, rather than translating one into the other, and letting the school's own staff edit their pages. We built the site that way, each language reading in its own direction. Parents read about every stage from kindergarten to A-Level, enquire about admission with their documents attached, and buy uniform or pay fees by card, bank transfer or on collection. Each enquiry goes to the department responsible, and every basket is priced again by the school's own system before payment is taken.
- Bilingual by constructionEnglish and Arabic as equals, each reading in its own direction, with 1,470 translated phrases, the same count in each language.
- School-edited contentTwelve kinds of content, edited with rich text, so the school's staff change pages without a new release of the site.
- Uniform and fees shopCard checkout, bank transfer and payment on collection, with proof-of-payment upload.
- Admissions enquiriesEnquiry with document upload, routed to the responsible department inbox rather than one catch-all.
- Prices checked at paymentEvery basket is priced again by the school's own system at checkout, never taken from the parent's browser.
- Parent accountsAccounts with password reset, alongside alumni and newsletter capture.
How it works
One flow, start to finish.
Workflow
Select a stage to see what it does, what it receives and what it hands on.
Select a stage to see what it does, what it receives and what it hands on.
- Sources: Parent picks a language. Receives from: Nothing. Hands on to: Admissions enquiries, Uniform and fees shop.
- Capture: Admissions enquiries. Enquiry with document upload, routed to the responsible department inbox rather than one catch-all. Receives from: Parent picks a language. Hands on to: Department receives it.
- Capture: Uniform and fees shop. Card checkout, bank transfer and payment on collection, with proof-of-payment upload. Receives from: Parent picks a language. Hands on to: Department receives it.
- Outcome: Department receives it. Receives from: Admissions enquiries, Uniform and fees shop. Hands on to: Nothing.
The same site in either language, at an address that says which one it is. A parent reads a policy, enquires about admission with the documents attached, or buys uniform and pays by the method that suits: card, bank transfer, or on collection with proof uploaded afterwards.
What changed · As at September 2026
English and Arabic, built as equals.
A site in English and Arabic with full right-to-left layouts, whose pages the school's staff change themselves without a new release, and a checkout that prices every basket again before payment.
Live.
For technical teams
Engineering decisions
How it was built.
Build both languages in from the start: Arabic and English as equal citizens from the first commit, with locale-prefixed routes and full RTL, and content the school edits itself.
Two languages are a routing decision before they are a content decision: locales are path segments, every one of the 47 page routes exists in both, and direction is a property of the document rather than a stylesheet override. Content lives in a CMS (Payload) with 12 collections so the school's own staff edit pages; the storefront reads the same data. Cards are taken through PayTabs, alongside bank transfer and payment on collection with proof-of-payment upload. The one thing never taken from the client is money: the basket is priced again on the server at checkout.
Built with