Back to blog

Your Storefront Apps Should Speak Your Customers' Language

A merchant's translated Shopify store still showed English inside its discount widgets. Here is why storefront apps must sync with the shopper's language, and how we built per-language widget text.

Discount Prime Team
Discount Prime Team
· 6 min read
Your Storefront Apps Should Speak Your Customers' Language

A merchant in Bulgaria sent us a short email that changed our roadmap. Their store looked, to them, completely finished: the theme was translated into Bulgarian, they were selling across the EU through Shopify Markets, and every product page read cleanly in their customers' language. Except for one thing. Our free shipping bar, sitting at the top of that beautifully translated page, still said "You're 25 lv away from free shipping" in English.

They were not angry. They were confused. They had translated everything they could find, so why was this one strip of text still in English? The answer turned out to be more interesting than the bug, and it points at something the whole Shopify app ecosystem gets wrong more often than it should.

The text you can't translate

When you localize a Shopify store, you reach for Shopify's own Translate & Adapt, or one of the popular translation apps. Those tools do an excellent job on the things they can see: theme content, product titles and descriptions, collections, navigation, checkout strings. They walk the parts of the storefront that Shopify exposes to them and swap the language.

What they cannot see is the text that lives inside another app's widget. A free shipping bar, a discount table on the product page, a sales badge, a cart summary line, a Buy X Get Y modal: those strings are stored by the app that renders them, not by the theme and not by Shopify's translation layer. A translation app has no way to open up a discount app's settings and rewrite its copy. So that copy stays in whatever language the merchant first typed it in, usually English, no matter how thoroughly the rest of the page is translated.

This is the gap our Bulgarian merchant fell into. They had done everything right. The tool that was supposed to translate their store simply had no reach into ours.

Why one English phrase costs more than it looks

It is tempting to treat this as cosmetic. It is not. A storefront earns trust by being consistent, and shoppers read inconsistency as a warning sign.

Picture the page from the shopper's side. Everything is in Bulgarian: the header, the product, the reviews, the price. Then one bar near the cart is in English. The effect is not "this store also speaks English." The effect is "something here is broken," and that doubt lands at the worst possible moment, right when the shopper is deciding whether to trust you with a payment. The widgets that show discounts are, by design, the ones closest to the purchase decision. A free shipping message, a volume discount table, a free-gift offer: these exist to push someone over the line. If they are the one element that looks out of place, they undercut the very conversion they were built to create.

For a store selling into several markets, this is not an edge case. It is every non-default market, on every page, on the highest-intent element. Multiply that by the traffic Shopify Markets sends you and the cost of a single untranslated string stops looking cosmetic.

What "syncing with the storefront language" actually requires

Getting this right is not about machine translation. Merchants know their markets and their own brand voice, and a discount that reads as natural in Bulgarian is not the one a generic engine produces word for word. The job of the app is not to invent the translation. It is to carry the merchant's own words to the right shopper at the right time. Concretely, that means four things:

  • Read the store's published languages. The merchant already declared which languages they sell in, under Settings then Languages in the Shopify admin. The app should use that list, not ask the merchant to set languages up a second time.

  • Let the merchant author text per language. Every string the app shows on the storefront should have a place to type its translation, in each published language, in the merchant's own words.

  • Detect the shopper's locale and switch automatically. On the storefront, the app should see which language the shopper is browsing in and render the matching text with no code and no theme edits, working with Shopify Markets and translated themes out of the box.

  • Fall back to the default, never to blank. A half-translated store is normal while a merchant is still filling things in. Any untranslated field should quietly fall back to the default language so a widget never renders empty, and the app should flag what is still missing so the merchant can finish at their own pace.

None of that is exotic. It is simply the app taking responsibility for the language of the text it puts on someone else's storefront, instead of leaving a hole that no translation app can fill.

What we built

We took the Bulgarian merchant's email as a specification. The result is widget translations that cover the entire widget set, not just a favored few.

When a store has more than one published Shopify language, a language selector now appears inside each widget's settings. The merchant switches language and types the translation for each text field: the messages in the free shipping and discount progress bars, the labels on the product-page discount table, the "Total" and "Saved on cart" lines in the cart summary, sales badge text including per-campaign custom badges, every button in the Buy X Get Y and free-gift modal, the cross-sell widget's titles and buttons, the low-stock alert, and the countdown timer's labels. On the storefront, the widget detects the shopper's current locale and renders the matching text automatically. Anything left untranslated falls back to the default, and languages with missing translations are flagged so nothing silently ships half-done. It works with Shopify Markets and translated themes, needs no code, and is included in the plan at no extra fee.

Our merchant in Bulgaria now shows the same promotions in Bulgarian that their neighbors see in their own languages, from one campaign, with nothing duplicated.

A small standard worth holding apps to

If your store serves more than one language, it is worth spending five minutes as a shopper. Switch your storefront to each language you sell in and read the pages the way a customer would, all the way to the cart. Watch for the strings that stay in your default language while everything around them changes. Some of them will belong to apps.

When you find one, the question to ask the app is simple: can I translate this into the languages my store already publishes? An app that renders on your storefront is part of your storefront, and it owes your customers the same language the rest of the page speaks. That is the standard we now hold ourselves to, because a merchant in Bulgaria was kind enough to point out that we had not been.

Ready to close the gap in your own store?

Add Discount Prime and translate every widget into the languages you already sell in. You can find the best step-by-step guide here in our help center knowledge management system.

shopifylocalizationshopify-marketsinternationalizationstorefront-widgetsproduct-updates
Discount Prime Team

About the author

Written by the Discount Prime Team - the people building and supporting Discount Prime, the smart discount and pricing app for Shopify. We share what we learn from helping merchants run volume discounts, tiered pricing, and high-converting promotions every day.

Frequently asked questions

Why does my Shopify store show English text inside app widgets even though the theme is translated?

Shopify's translation tools and most translation apps localize theme content and product data, but they cannot reach text that lives inside another app's widgets, because that text is stored and rendered by the app, not the theme. Unless the app translates its own strings, its messages stay in the default language on an otherwise translated page.

Does storefront language matter for conversion?

Yes. Shoppers trust a store that speaks their language consistently. A single English phrase in a discount bar or badge, sitting on a page that is otherwise in the shopper's language, reads as a bug and undercuts confidence at the moment of purchase. Consistency across every element, apps included, protects the trust that drives conversion.

How should a Shopify app support multiple languages on the storefront?

It should read the store's published Shopify languages, let the merchant enter text for each language, detect the shopper's current locale on the storefront, and render the matching text automatically. Anything left untranslated should fall back to the default language so a widget never renders blank, and it should work with Shopify Markets and translated themes without theme edits.

Can I translate Discount Prime's widgets?

Yes. Every Discount Prime widget's text can be translated into each language your store publishes in Shopify. A language selector appears in each widget's settings when your store has more than one published language, and untranslated fields fall back to your default. See the widget translations page for the full list.

Do I need a separate translation app to localize discount widgets?

No. If the discount app translates its own widgets, as Discount Prime now does, you enter your translations inside the app's settings and it handles locale detection, switching, and fallback. No third-party translation app, no code, and no theme editing are required.

Run profit-first promotions on Shopify

Discount Prime brings eight discount types, margin analytics, and conflict detection into one Shopify-native app.

See pricing

Or see it live in our demo store and watch every feature working on a real Shopify store.

Related articles