Why test with Arabic and Hindi text, not only English?
Because most of what breaks with non-Latin text never shows with English. Arabic runs right-to-left and mixes with left-to-right numbers and code, its letters change shape by position, and it carries optional diacritics that make two "equal" strings unequal; Hindi's Devanagari joins consonants and vowel signs into clusters that a character counter, a truncation or a cursor can split wrongly. Locale formats differ too — Eastern Arabic digits, the Hijri calendar, Indian number grouping (1,00,000). A suite with only English data leaves all of this untested.
mixedBidi the ISO date follows Arabic letters, so its digit groups are laid out right to left: stored as 2021-02-03, it shows as 03-02-2021, while the order id stays intact.As an Arabic line displays it (read from the right)
Part 1:تم استلام الطلب
As stored: memory order, 1 to 7
Part 1:تم استلام الطلب
- 1Arabic wordsThe sentence starts here, at the right.
RTL - 2Order idLatin letters, then digits: one left-to-right run that stays intact.
LTR - 3Arabic wordRight to left again, after the id.
RTL - 4ISO date: yearStored first. After Arabic letters the date’s groups run right to left, so the year shows at its right end.Reordered
- 5ISO date: monthStays in the middle.
- 6ISO date: dayStored last, shown at the date’s left end: the line reads
03-02-2021.Reordered - 7Arabic words“من” (from) and the record’s first name; the sentence ends here, at the left.
RTL
The displayed order is what the Unicode Bidi Algorithm computes: the field carries no LRM, RLM or isolate controls to stop it. It is this reordering that breaks copy/paste and truncation.
How to use Arabic Test Data Generator
- Pick a country or Mixed and the digit system.
- Keep diacritics and bidi fields on for rendering tests.
- Set the count and format and press Generate.
Arabic Test Data Generator features
- Arabic names with transliteration, Arabic addresses and country-specific phones for SA, JO, AE and EG
- Sentences, words with diacritics (tashkeel) and ligatures
- Amounts and dates in Arabic-Indic or Western digits
- Hijri dates with Arabic month names
- Mixed RTL/LTR sentences embedding Latin ids and ISO dates
- Seedable; JSON, CSV, SQL, XML, JSON Lines or table output
Arabic Test Data Generator example
Arabic record
Input:
Country: Saudi Arabia · Digits: Arabic-Indic · Records: 1Output:
{
"nameAr": "سمر نايف الغامدي",
"nameEn": "Samar Nayef Al-Ghamdi",
"phone": "+966 55 991 7486",
"withDiacritics": "شُكْرًا جَزِيلًا",
"ligatures": "الله",
"amount": "٩٨٩٥.٤٧ ر.س",
"dateHijri": "٢٠ جمادى الآخرة ١٤٤٢ هـ",
"mixedBidi": "تم استلام الطلب ORD-84719 بتاريخ 2021-02-03 من سمر"
}Frequently asked questions about Arabic Test Data Generator
What makes Arabic data hard to handle?
Right-to-left layout, contextual letter shaping, diacritics (tashkeel), ligatures such as لا and الله, two digit systems and mixing with Latin text. Each record exercises all of these.
Which countries are included?
Saudi Arabia, Jordan, UAE and Egypt — names, addresses and phone numbers follow the chosen country.
How are dates handled?
Every record carries a Gregorian date (optionally in Arabic-Indic digits) and a Hijri date with Arabic month names, computed with the tabular calendar.
What is the mixed bidi field for?
It embeds a Latin order id and an ISO date inside an Arabic sentence, a classic case where bidi reordering breaks copy/paste and truncation.
Technical notes
Names are given name + father's name + family name from paired Arabic/Latin lists (50 given names per gender, 60 family names), so nameEn is a fixed transliteration rather than rule-based romanisation, and also seeds the e-mail local part. Saudi addresses use the National Address layout: four-digit building number, حي district, five-digit postal code and additional number. The ligature field mixes shaping-dependent base-letter sequences (لا, الله, لأ) with the precomposed code point ﷺ (U+FDFA).
Arabic-Indic mode maps only 0–9 to U+0660–U+0669; the decimal point and ISO hyphens stay ASCII, and amounts are always riyals (ر.س / SAR) whatever the country. Hijri dates come from a Julian Day Number conversion with the arithmetic 30-year cycle (10,631 days), hence possible one-day gaps from Umm al-Qura. mixedBidi keeps the order id and ISO date in Western digits with no LRM, RLM or isolate controls, leaving reordering to the Unicode Bidi Algorithm.
References
- The Unicode StandardThe universal character set and its encoding forms (UTF-8, UTF-16, UTF-32), normalization and the properties of every code point.
- UAX #29: Unicode Text SegmentationHow text is divided into grapheme clusters, words and sentences — why a "character" count can differ from a code-point or byte count.
- UAX #15: Unicode Normalization FormsThe NFC, NFD, NFKC and NFKD forms — the reason two visually identical strings can compare unequal until normalised.
- Personal Data Protection Law (English translation)The Saudi law governing personal data — why test environments should use synthetic data rather than copies of real customer records.