Why Shopify shows English on your translated product pages
A shopper opens your French store and a product page greets them in English — title, description, or both. Nothing is down, nothing errors. This is Shopify working as designed: wherever a translation is missing, the storefront quietly serves the source language instead.
The fallback is the feature — and the silence
Shopify's translation model stores translated values per field, per language. When a field has no stored translation, the page does not break and does not warn; it renders the source value. That is the right call for robustness — a missing translation should not blank a product page — but it has a consequence that surprises every merchant who meets it: a translation gap is invisible in every place you normally look. No error report, no failed job, no red badge. The page renders; it just renders in the wrong language, to the only audience who would notice — your shoppers.
Several different problems wear the same face
Source-language text on a translated page is one symptom with several distinct causes, and they need different fixes:
- The product was never translated. New products added after the big translation pass are the classic case.
- The translation run skipped it. Auto-translation jobs and imports can skip products or single fields without reporting it — we measured a whole class where the title got translated and the description did not (129 cases across 24 stores).
- The field's translation record is missing rather than empty. In Shopify's data model those are different states: a stored empty translation renders as empty, a missing record falls back to source. A CSV import can silently turn one into the other.
- The language itself serves nobody — published but attached to no market, in which case every page of it is unreachable (measured separately).
For scale, from our corpus of 27,140 product comparisons across 48 stores: fully untranslated products outnumbered the title-only split about fifteen to one, and the title-only split concentrated in just 3 of 24 stores — translation health behaves like a property of the store's process, not of individual products.
If you check for yourself, two measured warnings
- The catalogue feed can disagree with the page. In an early 12-store sample, 3 stores looked untranslated in the public catalogue data while their live pages were translated — their themes render descriptions from app-managed metadata. Whatever tool or script you use, confirm a sample of its claims on the live pages before acting; in our scans, a store's claims verify all-or-nothing (16 of 16 stores were either 100% or 0% confirmed).
- Only scan published languages. An unpublished language answers API queries with an empty translation set — indistinguishable from "nothing translated". On one of our own test scans, ignoring this would have manufactured 26 false findings.
For developers: the two APIs disagree about what "missing" looks like
If you script a check yourself, one measured trap: Shopify's two data surfaces represent an untranslated field in opposite ways. The public storefront catalogue gives you the source text back — the fallback, already applied — so "translation equals source" is your signal. The Admin API's translatable-resources surface returns no entry at all for that field — and a stored-but-empty translation returns an entry whose value is empty. Conflate those two and your report claims "your German description is empty" about a product that is actually untranslated: a different and wrong statement, pointing at a different fix. Our scanner keeps a dedicated rule for exactly this distinction.
And from the outside, don't guess language URLs: in 27 of 70 stores we measured, at least one language lives at a path that is not its language code. The store's own hreflang map — deduplicated by language path, since country variants inflate it (one store carried 200+ rows) — is the honest source.
The two-minute manual check
Open your best-selling products in each published language — the actual storefront pages, in a private browser window — and read them. Title language, description language, and whether recent source edits made it across. That reading shows you the shape of your translation process: which pass ran, what it skipped, where it stopped. The systematic version of the same reading — every product, every published language, with each finding linked to your own page so you can verify it — is what the free check below does.
Related measurements
Check your own store in one minute.
Our free scanner reads your public storefront in every published language and lists the products where the translation stopped matching the source — with links to your own pages, so you judge the evidence yourself. No install, no login.
To hear about it first — a weekly watch with an email when a translation breaks — that's LocaleWatch on the Shopify App Store.