Skip to content

Adding a language is not translating one: what Arabic taught Holt

A new language is not a translation: its structure decides where your product breaks. Holt's Arabic pair took five weeks and needed a root confusion layer and a vowel channel the European pairs never had. Our advice: budget a new language as a discovery phase, not a per-word rate.

holt · localization · arabic · case

Adding a language to a product is not translation. It is finding the places where the new language's structure breaks assumptions your earlier languages never tested. You only find them by building the language. So our advice to any founder taking a learning or content product into a new language or market is this: budget it as a discovery phase, not a per-word rate.

The case behind that advice is Holt, our language-learning product, and its newest pair: Arabic.

What it took

Holt had already been built for European targets: German, Italian and Spanish. Arabic was planned as one more pair. Here is what one more pair cost:

  • Five weeks. The generation prompt was frozen on 29 August 2026, and the bank was assembled on 3 October 2026.
  • 712 vocabulary commits in that window.
  • 4,224 entries, 4,838 senses and 9,676 examples, written in 125 batches.
  • Layered review. Every batch ran author → skeptic → fixer → repeat skeptic. Then a third full pass went over the whole bank.

The bank is built and passed a live check through production code (9/9). It is not open to learners yet. Onboarding lists it as "Coming soon" and opens it when the product's switch flips. We are not putting a date on that.

Volume was not the hard part of those five weeks. The hard part was three things Arabic showed us that the European pairs never had.

Discovery 1: learners confuse words by root

A quiz is only as good as its wrong answers. In the European pairs, a good distractor was a word close in meaning or form. Arabic organizes much of its vocabulary around consonant roots, and words from one root sit close together in a learner's head. As an illustration (general Arabic, not a quote from the bank):

root  k-t-b   "writing"
  كتب   kataba   he wrote
  كتاب  kitāb    book
  كاتب  kātib    writer
  مكتب  maktab   office, desk

The words that share a root are the ones a learner actually mixes up. A quiz that ignores roots offers easy distractors and tests the wrong thing. So Holt's quiz gained a new layer: 678 root-based confusion clusters with 1,661 members. The generator picks wrong answers from that layer, not only from meaning.

confusion layers, en-ar
  semantic   words close in meaning     (shared with European pairs)
  root       678 clusters / 1,661 words (new, Arabic only)

The European pairs had no such layer. Arabic could not work without one.

Discovery 2: written vowels are their own channel

Arabic is usually written without short vowels. The marks that add them (tashkeel) are optional for a fluent reader and essential for a learner. The same three letters can be different words:

كَتَبَ   kataba   he wrote
كُتُب    kutub    books

The European pairs had no such thing, so the product had nowhere to put it. Tashkeel needed its own channel for grading and display: when to show the vowels, when to hide them, and how to score an answer that is right except for the vowels.

The checks had to change too. A new check for vowels inside text found 78 hits in fields the old lint had never read. The lint was not wrong. It was blind, because the European pairs never gave it a reason to look there.

Discovery 3: one answer key, two right answers

Holt shows the same Arabic item to learners with different native languages. The generator checked that wrong options were really wrong by comparing English anchors only. In English the options were different words. In Russian, some of them were the same word.

A full scan of production found 62 synonym pairs whose Russian translations overlapped. A Russian speaker would have seen two correct answers. After the fix, the synonym layer went from 742 edges to 626.

check before:
  for each option: option.en != target.en          -> valid

check after:
  for each gloss language L in (en, ru, ...):
    for each option: translations(option, L)
                     ∩ translations(target, L) == ∅ -> valid

A step earlier, a panel of 16 reviewers had already judged the model's proposed synonyms: 2,717 of 3,136 were rejected and 419 kept. Our reading: most "synonyms" a model proposes do not hold up as interchangeable answers in a quiz, and an answer key checked in one language does not vouch for the others.

The cost of running it at scale

The build ran as parallel workers. That has its own failure mode. About 27 concurrent workers were dropped all at once by the account limit, twice. In session 3, 26 of about 28 died together.

concurrency   ~27-28   -> collapse, twice
concurrency    18      -> new ceiling
writes         per step, to disk
saved          5 partial batches, 3 reviewer verdicts

The ceiling went down to 18. Because every worker wrote its partial output to disk as it landed, five partial batches and three reviewer verdicts survived instead of being lost.

What a discovery budget should contain

This part is our opinion, built on the Arabic pair rather than measured across many products.

A per-word rate assumes the work scales with volume. In our experience with Arabic, the expensive part is the work no per-word rate prices: the layers the product did not know it needed. We would budget a new language or market in four lines:

1. structure audit    what does this language do that ours never did?
                      (roots, scripts, vowels, gender, word order)
2. pilot batch        run real material end to end; count what breaks
3. check review       which checks were blind to the new structure?
4. volume             only now price per entry

The first three lines are what Arabic added to Holt's plan. The fourth is the part a translation quote covers.

FAQ

Why not translate an existing pair into Arabic? Because translation keeps the old pair's assumptions. Holt's European pairs had no root layer and no vowel channel. A translated Arabic bank would have had neither, and the quiz would have tested the wrong confusions.

Is the Arabic pair live? It is built and passed a live check through production code (9/9). It is not open to learners yet. Onboarding shows it as "Coming soon".

Does the two-right-answers problem only affect Arabic? Arabic is where Holt found it, but the cause is general. Any product that shows one item to people with different native languages and checks the answer key in one language can hit it. Our advice: check every option against every language the user sees.

How long does a new language take? We don't promise timelines. For one data point, Holt's Arabic pair took five weeks from frozen prompt to assembled bank. That is what a discovery phase is for: finding out what your language costs before you commit to a number.

Did the extra checks help? In this build, yes. The new checks found problems the earlier passes missed: the 78 vowel hits and the 62 overlapping pairs.

Try it

Holt measures what you know instead of counting streaks. Its other pairs are open now, and Arabic will join them once its switch flips. Try it at holt.iloblique.com.

If you're taking your own product into a new language or market, we'd like to hear about it.


Sources: Holt build records and commit history, 29 August – 3 October 2026 (Arabic bank assembly, review passes, root confusion layer, vowel lint, synonym scan, session logs).