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

The title is translated — the description is not

On a translated Shopify product page the title reads in the shopper's language, and the description under it is still in yours. No error anywhere, no warning anywhere: the page simply renders half-localised.

Why nothing flags it

Shopify serves the source language for any field that has no stored translation, so an untranslated description is not an error state — the page renders normally (how that fallback works). And the comparison checks that catch other gaps are structurally silent on this one:

The gap sits precisely between the checks. We know because our own scanner had the same blind spot until we went looking for it deliberately.

What we measured

Across 24 multilingual Shopify stores we compared 9,450 title/body pairs, counting only products whose source description is at least 200 characters — short texts can match by accident, and a check that fires on accidents is worse than no check.

For scale: in the same scan this split measured at 6.6% of the volume of the fully untranslated class — roughly one title-only gap for every fifteen products not translated at all. Rare overall, dense where it occurs. The clustering is the tell: this is not random noise, it is something specific a store did once.

Where it comes from

Partial translation imports. We reproduced the mechanism on our own test store: a CSV import that carried a title translation and a deliberately empty description stored only the title — Shopify never created a translation record for the body at all. Where no record exists, the storefront serves the source. The visible result was a German title over an English description — and it sat for months on a store we scan every week, because every total on the reports looked plausible, until a check built for this exact shape caught it.

The same shape can come out of an auto-translation run that skipped long descriptions, or a manual pass that did titles first and never came back. Whatever produced it, the storefront result is identical — and identically silent.

Missing is not the same as empty

Two states of a description translation look the same to a shopper and need different fixes. A missing record makes Shopify fall back to the source: the shopper reads your language. A stored empty record is honoured as-is: the shopper reads nothing. When you export translations to CSV, both can hide — we measured that importing an empty description column does not create an empty record; it creates no record, which turns "empty" into "missing" without telling you. If you are auditing by export, treat a blank cell as "unknown", not as "blank on the storefront".

How to check your store

The spot check costs one minute: open a translated product page and read the description in the language the page claims to be in. For a store of any size, the systematic version is: in each published language, find products whose description matches the source exactly while the title differs. That comparison — with the same 200-character floor that kept our false-alarm count at zero across 37 verified samples — is one of the checks in the free scan below.

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.