Most bilingual sites are tested in one language by one person, then switched to the other language the night before launch. That is when you find English words inside Arabic menus, a price that jumps to the wrong side of a sentence, a checkout that works in English only, and an email that arrives in the wrong language.
This article gives you a test plan that a non-developer can run and sign. It works in rounds, and each round says what to check and what a pass looks like. I used W3C internationalization pages, WCAG, Google's documentation and Shopify's Help Center, all read on 4 November 2026. Where a page does not answer a question, I give it as something to test, not as a claim.
Set up the test
Test with real content, not placeholder text. Pick ten products that include a long Arabic name, a name with an English brand inside it, a model number, a price and a description with a list. W3C's quick tips say text expands in translation and advise in-country feedback on images, video and examples. For the Arabic test, use someone who reads Arabic as a first language, and never let the person who built the site be the only tester. Shopify's Preview store button shows the storefront as customers see it, so use it before the store password comes off. If you would rather hand the work to a quality and testing team, give them this plan.
Make a sheet with the journeys down the side (browse, search, product page, cart, checkout, account, order email) and the language and device across the top. Every cell gets a pass or fail and a screenshot.
Round 1: language and direction in the code
W3C says to set the dir attribute to rtl on the html element of a right-to-left page, and to set direction in markup, not in CSS. It also says a language declaration does not set direction, so a page needs both the lang and the dir attributes. WCAG 3.1.1 (level A) requires the page language to be machine-readable. WCAG 3.1.2 (level AA) asks for a language mark on passages in another language, with proper names exempt. Ask your developer to show the html tag of five page types in each language. Then check by eye:
- No English menu items, buttons or error messages on Arabic pages. Shopify says an untranslated field falls back to the default language, so gaps show as English. Google says it works out a page's language from its visible content and advises one language for each page's content and navigation.
- The language switcher names each language in its own script, as W3C's quick tips advise, and every page links to its twin in the other language.
Pass when both languages are declared correctly on every page type and a reader finds no stray words.
Round 2: mixed text, numbers and mirrored layout
W3C's article on inline markup says a phrase in the opposite direction, such as a brand, a URL or a quotation, should be wrapped in markup that sets its direction. When the direction of inserted text is not known in advance, it suggests dir set to auto, or the bdi element, and its example is a restaurant name from a database. Product names, reviews and customer names are the same kind of text, so test them. W3C's page on Unicode controls adds two faults: a number after a right-to-left phrase can be pulled into the wrong run (its example is Hebrew), and punctuation between an Arabic phrase and a Latin word can land on the wrong side. Test:
- An Arabic product title that ends with an English brand, and one that ends with a number.
- Prices, phone numbers, dates, order numbers and discount codes, on the page and in emails.
- A sentence that ends with a full stop or question mark after an English word.
Decide your digit style on purpose. W3C's Arabic layout requirements (a draft note dated 2 October 2025) say numbers are written left to right even in Arabic text, and describe digit families by region, with Egypt, Saudi Arabia and Iraq as examples for Arabic-Indic digits and Algeria and Morocco as examples for European digits. It does not settle the question for your customers, so ask them. Then check that every page, email and invoice uses one style, and that forms accept the other style if someone types it.
For mirrored layout, check the logo position, menu, breadcrumbs, sliders, progress steps and tables. W3C notes that setting dir on a table reverses its columns, and recommends logical CSS such as margin-inline-start and text-align: start rather than left and right. As one example, the Wikimedia Codex design system guide says to mirror icons that show horizontal direction, such as forward and back arrows, and not to mirror clocks, calendars or check marks. That is one design system's guidance, not a standard, so agree your own icon rules with your designer. Pass when nothing sits on the wrong side, and no arrow points the wrong way.
Round 3: fonts, line height and forms
W3C's Arabic layout requirements say Arabic ascenders and descenders reach much further than Latin ones, so mixed lines need careful alignment. Check headings that wrap to two lines, buttons with long Arabic labels, and cards where a long name sits next to a short English one. WCAG 1.4.12 (level AA) says content must not lose content or function when a user sets line height to at least 1.5 times the font size, paragraph spacing to 2 times, letter spacing to 0.12 times and word spacing to 0.16 times. The page does not say how this applies to Arabic, so run the test on Arabic pages and look for clipped text.
Forms need the most hands-on time:
- Type an Arabic name, an English name, a long name and a single name. W3C advises dir set to auto on form inputs and inserted text.
- Type a phone number with and without a country code, with spaces, and with Arabic-Indic digits. W3C's quick tips warn against building wrong assumptions about phone number lengths into validation, and note that address layouts differ between cultures.
- Fill the address form with an area, a building, a landmark and a P.O. box. Ask your courier what it needs, and test that nothing is lost.
- Switch keyboards between fields on a real phone. Check that autofill and the email field stay readable.
Round 4: search, checkout, payments and emails
Search. The Shopify search page I read lists 33 supported languages, and Arabic was not among them. The page shows no date and the list can change, so check the current list. The page does not say how search treats other languages, and its predictive search page says predictive search is not available in all languages. So test, do not assume. Search for ten product names in Arabic, in English, and in the spellings your Arabic staff say customers really use, such as with or without diacritics. Check the no-results page and the filter labels.
Checkout. Shopify says checkout follows the language the customer browsed in, and its language requirements page listed Arabic among 49 languages with checkout translations when I read it. Run a full order in each language. Include a discount code, a logged-in and a logged-out customer, your shipping rates and a failed payment, all of which Shopify's test order page lists.
Payments. Shopify offers a test payment gateway and Shopify Payments test mode. Its page says manual methods such as cash on delivery and bank transfer do not support test mode, so you must place a real order to test them. Plan how to cancel it so no courier is sent. It also says some local payment methods are not available at checkout while Shopify Payments test mode is on. Its example is a European method, so ask which of your methods are affected. For any other gateway, ask the provider for its test mode and its list of test cards. Only orders paid with Shopify's test gateway or its Payments test mode can be deleted, so archive the rest. Turn test mode off before launch, because customers cannot place live orders while it is on.
Emails. Shopify says a notification that has translations reaches the customer in the language they used when ordering. Translate each template under Settings, then Notifications, then Localize. Save first, then use Preview and choose a language. Then place a real Arabic order and open the email on a phone. Check direction, the order number, product names, the tracking link and the sender name.
Round 5: devices, search engines and accessibility
Chrome's documentation calls device mode a first-order approximation, says your code does not run on a phone, and advises using a real device when unsure. So test on at least one iPhone and one Android phone, plus a small screen and a large one. Check Arabic headings and body text on each. Tab through each page with a keyboard and confirm the focus follows reading order in both languages.
For search engines, Google says hreflang tags are ignored unless pages link to each other, and each version must list itself. Shopify says it adds the tags automatically for markets with their own domain, subdomain or folder. View the source of an English page and its Arabic twin and confirm each lists both. Google also advises against redirecting visitors by a guess about their language, so test in a private window with the browser set to each language. If you are moving from another platform, run the old-address checks from our guide to moving an Arabic and English store. For fonts and search, see our article on right-to-left layout, fonts and search; for hreflang detail, our hreflang guide.
The sign-off sheet
These are launch blockers:
- Checkout, payment or an order email fails in either language.
- A price, phone number or order number reads wrongly in either language.
- English text on Arabic pages along the buying path, or the reverse.
- Test mode is still on, or test orders are still in the live order list.
- Hreflang or language declarations are wrong on any page type.
- Any redirect from an old address lands on the wrong language.
Then name who signs. The Arabic reader signs the Arabic journeys, the English reader signs the English ones, the person who handles orders signs the emails and cash on delivery orders, and the developer signs the code and redirects. Keep the filled sheet with its screenshots and the test order numbers. For the wider launch list, read our guide to launching an online store in the Middle East.
ESTASOFT offers quality and testing. To plan a test round, send a short brief on the contact page.
Sources
- Structural markup and right-to-left text in HTML: dir on the html element, lang does not set direction, markup rather than CSS, logical CSS, dir=auto on inputs, tables reverse with dir (no date shown) (checked 4 November 2026)
- Inline markup and bidirectional text in HTML: wrapping opposite-direction phrases in markup that sets direction, dir=auto and bdi when direction is unknown (restaurant name example); page shows no date (checked 4 November 2026)
- How to use Unicode controls for bidi text: a number after a right-to-left phrase (Hebrew example) and punctuation between an Arabic and a Latin word can display wrongly; page shows no date (checked 4 November 2026)
- Arabic & Persian Layout Requirements: numbers written left to right, digit families with example countries, ascenders and descenders, Group Draft Note dated 2 October 2025 (a draft that may change) (checked 4 November 2026)
- Internationalization Quick Tips for the Web: text expands in translation, in-country feedback on images, video and examples, language names in their own script, phone number length and address assumptions; page shows no date (checked 4 November 2026)
- Understanding Success Criterion 3.1.1: Language of Page: level A, page language programmatically determinable (checked 4 November 2026)
- Understanding Success Criterion 3.1.2: Language of Parts: level AA, language of passages, proper names exempt (checked 4 November 2026)
- Understanding Success Criterion 1.4.12: Text Spacing: level AA, four text spacing values users can set without loss of content (checked 4 November 2026)
- Wikimedia Codex: bidirectionality style guide: one design system's icon guidance only: mirror horizontal-direction icons such as arrows, do not mirror clocks, calendars or check marks (checked 4 November 2026)
- Simulate mobile devices with device mode: device mode is an approximation, test on a real device when unsure (checked 4 November 2026)
- Managing multi-regional and multilingual sites: language judged from visible content, one language per page, no automatic redirect by guessed language, last updated 18 December 2025 (checked 4 November 2026)
- Tell Google about localized versions of your page: hreflang return links and self-reference, last updated 21 September 2026 (checked 4 November 2026)
- International SEO for markets: Shopify adds hreflang tags automatically for markets with their own domain, subdomain or folder (checked 4 November 2026)
- Shopify Help Center: test orders: test gateway and Shopify Payments test mode, live orders blocked while test mode is on (checked 4 November 2026)
- Shopify Help Center: process a test order: cash on delivery and bank transfer have no test mode, which test orders can be deleted, archiving, checklist of test order checks (checked 4 November 2026)
- Shopify Help Center: Shopify Payments test mode: some local payment methods (the page's example is iDEAL | Wero) are not available at checkout in test mode; live orders blocked in test mode (checked 4 November 2026)
- Shopify Help Center: prepare your store for launch: Preview store, test orders before launch, turn test mode off (checked 4 November 2026)
- Shopify Help Center: storefront search behavior: list of 33 supported search languages with Arabic absent when read (page shows no date, check the current list) (checked 4 November 2026)
- Shopify Help Center: predictive search: predictive search is not available in all languages (checked 4 November 2026)
- Shopify Help Center: language requirements: 49 languages with checkout translations including Arabic when read (list can change; page shows no date) (checked 4 November 2026)
- Shopify Help Center: checkout and notification languages: checkout language follows browsing language, translating and previewing notifications (checked 4 November 2026)
- Shopify Help Center: translate your store: untranslated content shows in the default language (checked 4 November 2026)
- Shopify Help Center: translate your theme: untranslated theme fields use the default language (checked 4 November 2026)
