LocaleWatch a read-only watchdog for the translations you already have

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:

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

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.

Run the free check

To hear about it first — a weekly watch with an email when a translation breaks — that's LocaleWatch on the Shopify App Store.