---
title: "Sell in Your Customers' Language: Multilingual Storefront Messages on Shopify"
description: "You translated your theme with Shopify Markets. Then a French shopper hits a purchase limit and gets an English error. Here's why app messages are the last untranslated surface on most cross-border stores — and how to fix it."
contentType: "blog"
locale: "en"
localized: true
source: "https://orderrules.com/blog/shopify-multilingual-storefront-messages"
slug: "shopify-multilingual-storefront-messages"
date: "2026-08-21"
tags:
  - "shopify"
  - "shopify markets"
  - "multilingual"
  - "translate and adapt"
  - "cross-border"
  - "storefront messages"
  - "internationalization"
---
You did the work. Shopify Markets is set up, Translate & Adapt has run, your product titles and theme strings are in French, German, and Japanese. A shopper in Lyon lands on your store and everything reads correctly.

Then they add a fourth bottle to the cart, hit your per-customer limit, and get:

> *"You can only order 3 of this item per month."*

In English. On a French storefront.

This is the last untranslated surface on most cross-border Shopify stores, and it's a bad one — because app messages only appear at the exact moments a shopper is being told *no*. The page they read in their own language is the easy one. The message that stops their checkout is the one that needs to be clearest.

## Quick answer: how to translate app messages on Shopify

**Shopify Markets translates your theme and content, but not your apps.** To get limit and availability messages in each shopper's language, publish your languages through Shopify Markets or Translate & Adapt, then use apps that read the shopper's active storefront locale rather than your store's default language. In OrderRules this is automatic across nine languages, with no per-language setup — and you can override any individual message with your own wording per language.

## Why translated stores still show English app messages

It helps to be precise about which system owns which string.

| Surface | Who translates it |
|---|---|
| Theme text, product titles, descriptions | Shopify Markets / Translate & Adapt |
| Checkout UI labels | Shopify |
| App messages — badges, banners, limit notices | **The app itself** |

Shopify hands apps a storefront locale. What an app does with it is entirely up to that app. There are three common behaviours, and only one of them is right:

1. **Hardcoded English.** The app ships one language. Every shopper everywhere sees English.
2. **Merchant's store language.** The app translates, but to *your* configured language. A German merchant's French shoppers see German. This is the sneaky one — it looks translated in testing because you're testing as yourself.
3. **The shopper's locale.** The app reads the active storefront language and renders accordingly. A French shopper sees French, a Japanese shopper sees Japanese, from the same store and the same rules.

If you sell across borders, only the third behaviour actually works.

## The messages that matter most

Not all app strings are equal. The ones worth auditing are the ones that appear when something is constrained — because those carry information the shopper has to act on:

- **Availability badges** — "10 units remaining today." A number without a comprehensible sentence around it is just a number.
- **Store-closed banners** — the shopper needs to know you're closed, not just that something is greyed out.
- **Per-customer and per-product limit notices** — "you already ordered 2 of 3 this month" is only useful if it's readable.
- **Minimum-order and case-pack badges** — "order in multiples of 6" is a rule the shopper must follow *before* they can check out.
- **Cart and disabled-button messages** — the difference between "the site is broken" and "here's what to change."

Every one of these is a point where an untranslated string turns into an abandoned cart, because the shopper's honest conclusion is that your store doesn't work.

## How to audit your own store in ten minutes

Do this as a shopper, not as a merchant. Log out, switch your storefront to each published language, and try to trigger each state:

1. Open a product that's near a limit — does the availability badge translate?
2. Visit outside your business hours — is the closed banner in the shopper's language?
3. Add a quantity below a minimum or off a case-pack multiple — does the badge translate?
4. Actually hit a per-customer cap — does the notice translate?
5. Push through to checkout on a blocked cart — what language is the error?

Write down what comes back in the wrong language. That list is your gap.

## Setting it up with OrderRules

OrderRules is available in **nine languages** — English, Japanese, Spanish, French, German, Italian, Dutch, Portuguese, and Simplified Chinese — across both the admin and the storefront, and the two follow different signals:

- **The admin** follows your Shopify admin language automatically. Run your store in Japanese, manage your rules in Japanese. Nothing to configure.
- **The storefront** follows *each shopper's* active storefront language. Nothing to configure there either — publish the language through Shopify Markets or Translate & Adapt and OrderRules picks it up.

Then, where the default translation isn't quite your voice:

1. Go to **Settings → Language & Translations**
2. Pick a language — every shopper-facing message fills in
3. Edit the ones that matter to you
4. **Save**

```
Message left at its default -> auto-translates to each shopper's language
Message you edited          -> pinned to your wording, shown to every shopper
```

That mix is the useful part. Hand-write your Japanese availability badge because the phrasing matters for a Japanese buyer, and let the other eight languages translate themselves.

Language support is included on **every plan**, Starter included. See [Languages & Translations](/docs/languages) for the full setup.

## The one thing that doesn't translate per buyer yet

Being straight about the gap: **checkout-blocking error messages currently follow your configured store language, not the buyer's.** If a cart violates a rule and Shopify's native checkout blocks it, that specific message appears in your store's language.

Everything before that point — the badge, the banner, the limit notice, the cart message, the delivery date picker — follows the shopper. In practice, a well-configured store rarely lets a shopper reach checkout with a violating cart, because the storefront messages caught it earlier and in their own language. But it's a real limitation, and you should know about it before you promise a fully localized checkout.

## Who this matters most for

- **Japanese stores.** Japanese buyers expect a native experience; a half-English one reads as untrustworthy in a market where trust does the selling.
- **EU merchants selling across three or four languages** from a single store and a single set of rules.
- **Shopify Markets merchants** running regional storefronts — one configuration, correct language per market.
- **Agencies** managing many client storefronts who don't want a per-locale message table to maintain.

## Where to go next

- [Languages & Translations](/docs/languages) — full setup and per-language customization
- [Dynamic Storefront Messaging](/docs/guides/storefront-messaging) — placeholders and message types
- [Per-Customer Order Limits](/docs/customer-rules/per-customer-order-limits) — the rules these messages describe

Your theme has been translated for a while. It's worth checking whether the messages that stop a sale have been.
