ContentRoofLab

LabNote 04Translation

A billion is not a billion in Spanish

When a ContentRoof video is made in another language, nothing is dubbed over the old pictures: every label, number and caption is rebuilt in that language. That makes numbers the place where a translation can quietly be a thousand times wrong.

Abstract

Dubbing tools keep a video's pixels, so English labels and numbers stay on screen. ContentRoof's videos are data, so it rebuilds them in each language: words, number formats, right-to-left layout and voice. Numbers are where that can fail silently: Spanish billón, German Billion, French billion and Italian bilione mean 10¹², not 10⁹. We built a checker that reads every number a narration states, in its own language, and compares it with the original. It caught 8 of 8 planted errors, raised no false alarm on 23 real translations of about 250 scenes, and let 20 of 20 explained scenes carry over into four languages.

8 of 8planted errors caught: false friends, swapped digits, a dropped number
0false alarms on 23 real translations, about 250 scenes
20 of 20explained scenes carried into Spanish, German, French and Arabic
A frame of an Arabic explainer about dreams
A frame of a Spanish explainer about coffee
A frame of a Spanish explainer about the sky
Specimens. ContentRoof videos in Arabic and Spanish: their numbers are written the way each language writes them.

Dubbing keeps the pixels

Automatic dubbing is now free on YouTube, and tools can clone a voice into dozens of languages. What none of them can change is the picture. A chart labelled in English stays in English; "3.5 million" stays "3.5 million" while the voice says something else.1

A ContentRoof video is not pixels. Every label, number, chart, map and caption is generated, so the same explanation can be rebuilt natively: its words in the language, numbers in the language's format (110,25 in Spanish, ١١٠٫٢٥ in Arabic), right-to-left layout for Arabic and Urdu, and the language's own voice.

Figure 1One explanation, five languages

Two scenes of a ContentRoof video in five languages side by side: a snowball compared with compound interest, and Brazil producing 31% of the world's coffeeA English, Arabic, German, Spanish, French
Two explained scenes carried from an English video into Arabic, German, Spanish and French: the same mechanism with native words, each language's number format (31% everywhere here; 110,25 or ١١٠٫٢٥ elsewhere), and Arabic laid out right to left.

Where translation fails quietly

Numbers. Most languages have a word that looks like "billion" and means something a thousand times bigger.

Figure 2The same word, a thousand times apart

10⁹a thousand million10¹²a million millionEnglishbillionSpanishmil millonesbillónFrenchmilliardbillionGermanMilliardeBillionItalianmiliardobilionePortuguese (Brazil)bilhãoRussianмиллиардArabicمليار
10⁹a thousand million10¹²a million millionEnglishbillionSpanishmil millonesbillónFrenchmilliardbillionGermanMilliardeBillionItalianmiliardobilionePortuguese (Brazil)bilhãoRussianмиллиардArabicمليار
Each language's word for 10⁹ and, where it exists, the word that looks like "billion" but means 10¹². Orange words are the false friends. Portugal's Portuguese also uses bilião for 10¹²; Brazil's bilhão is 10⁹.

A translation that writes 86 billones de neuronas has told a Spanish viewer the brain has 86 million million neurons. It reads perfectly. Nobody listening will notice, and a published study found error rates up to 20% on exactly these words.2 A video that is wrong by a factor of a thousand is worse than no video.

The same goes for decimal points. In German the point separates thousands, so "110.25" reads as 11,025; the German way to write 110.25 is "110,25". A translation that copies the English digits has changed the number.

A checker that reads numbers in every language

So every number in every translation is read in its own language and compared with the original. The reader understands each language's digits and separators, Arabic-Indic and Devanagari digits, scale words including the long-scale false friends, compound forms like mil millones, "half a million", small numbers written as words (tres, drei, ثلاثة), and Arabic duals. When a number is missing or changed, the scene is flagged, and an animated explanation never shows a number its narration doesn't say.

Planted error Language The checker said
86 billones for 86 billion Spanish missing 86 billion, found 86 billones
86 Billionen German missing 86 billion, found 86 Billionen
86 billions French missing 86 billion, found 86 billions
86 bilioni Italian missing 86 billion, found 86 bilioni
86 مليون (million) for billion Arabic missing 86 billion, found 86 million
110,52 for 110.25 Spanish missing 110.25, found 110.52
110.25 left as written German missing 110.25, found 11,025
Pakistan's 240 million left out Portuguese missing 240 million

Figure 3What the checker was given and what it said

Planted errors caught (8)8 of 8Correct controls left clean (2)2 of 2Real translations flagged (23)0 of 23no false alarmsExplained scenes carried (20)20 of 20
Planted errors caught (8)8 of 8Correct controls left clean (2)2 of 2Real translations flagged (23)0 of 23no false alarmsExplained scenes carried (20)20 of 20
Planted errors were written into otherwise correct translations of one English paragraph; controls were correct translations, one in Arabic-Indic digits. Real translations were whole scripts with many numbers each.
Data
Result
Planted errors caught (8)8 of 8
Correct controls left clean (2)2 of 2
Real translations flagged (23)0 of 23
Explained scenes carried (20)20 of 20

It caught all eight and left both correct controls clean, one of them written entirely in Arabic-Indic digits. On 23 real translations of about 250 scenes it raised no alarm. Getting there meant fixing the checker, not the translations: the first version compared the voice's spelled-out form instead of the screen's digits, read English "86 billion" twice, and counted "ninth century" against "9. Jahrhundert".

Carrying the explanation across

The check is what lets an animated explanation travel. Five explained scenes from four English videos were carried into Spanish, German, French and Arabic: the same animation, translated labels, its steps re-timed to the new voice, and every number checked again against the translated narration. 20 of 20 came through. The first run dropped 8 of them, correctly: the translations spelled "3" as tres and ثلاثة, and the checker refused to show a number it couldn't find in the narration. Teaching it number words fixed that.

Method

Checker
Reads every number a narration states in its own language: digits in each format, Arabic-Indic and Devanagari digits, scale words with the long-scale false friends, "mil millones", "half a million", small numbers written as words, Arabic duals; ordinals ignored.
Planted errors
One English paragraph with five numbers, translated correctly into Spanish, German, French, Italian, Arabic and Portuguese, then one error planted per copy (re-run for this note).
Real translations
A 12-scene stress script of big numbers in 7 languages and 4 real scripts in 4 languages: 23 translations, about 250 scenes.
Translator
A small, cheap model with ContentRoof's own translation prompt stood in for the production translator.

Limits

  • The checker reads numbers, not meaning. A translation that keeps every number but says the wrong thing about it passes.
  • The production translator's error rate was not measured here: the test translations came from a stand-in model. It translated all 26 big numbers of the stress script correctly in all 7 languages, so the published error rate did not reproduce on this sample.
  • Eight planted errors cover the kinds we know about. An unknown kind of error is, by definition, not in the test.
  • Hindi, Urdu, Polish and Russian scale words are in the reader but not in this test.

Notes

  1. Burned-in text is the one thing automatic dubbing can't change: YouTube's own help pages say translating text in the picture is still being explored. ↩
  2. A 2025 study of machine translation found error rates up to 20% on million and billion (arXiv 2501.04927). ↩

Make a video in another language →

03 Speech5 Nov 20263 min Sixty seconds is a different length in every language Asked for 60 s, our videos came out 44–105 s. Measuring each language's voice per letter now lands 43–62 s in eleven languages, and a cloned voice took Arabic errors from 10% to 0. 44–105 s → 43–62 sasked for 60 s, in eleven languages 02 Evaluation5 Nov 20264 min Balanced benchmarks hid a 95% error rate Our sentence classifier scored 79–95% on balanced tests. On real narration it gave 95% of plain statements a shape they don't have. What we measured and what fixed it. 5% → 88%plain statements left alone 01 Rendering5 Nov 20264 min We took the browser out of video export Our exports spent 80% of every frame waiting for Chrome's screenshot. We draw the same React components with Skia instead: 2.4× faster on a server, 5× on a laptop GPU. 2.4×faster export, the same frames