Blog

Translate Your Shopify Cart Drawer (Not Just the Theme)

translate shopify cart drawer

Quick answer: To translate a Shopify cart drawer, you need three layers: Markets + language picker, theme strings (Translate & Adapt / | t), and the drawer app's own locales. Autocomplete is full of "shopify translate and adapt not working" and "limitations" — that is usually layer 3. Translate & Adapt will not rewrite hardcoded app buttons. Weglot can miss a shadow-DOM drawer. Pair language with currency. CSA Research 2020: 76% prefer their language; 40% will not buy otherwise. Oxify ships the drawer in eight languages (EN, ES, FR, DE, IT, JA, PT-BR, DA).

The homepage is in Spanish. The cart still says "You are $12 away from free shipping." Checkout feels like a different shop. That is the bug this article is for.

Last checked August 20, 2026. Oxify ships the drawer in eight languages: English, Spanish, French, German, Italian, Japanese, Portuguese (Brazil), Danish. Currency is a separate guide: Shopify multi-currency cart drawer.

Key Takeaways

  • Three layers: storefront locale (Markets + Translate & Adapt), theme strings (| t), app drawer strings (the app must ship locales).
  • Translate & Adapt will not save you if the drawer app hardcodes English.
  • Keep the locale on cart URLs. Community reports of /cart dropping /es are common. Drawers often keep the page locale. Test both.
  • Language without currency is half a job. Show the market's money in the same drawer.
  • 76% / 40% is CSA Research 2020, not Oxify analytics.

What Shoppers Need in the Drawer

They picked a language. They expect:

  • Checkout, Remove, Empty cart
  • Reward bar ("$12 more for free shipping")
  • Upsell titles you wrote
  • Errors ("Enter a valid discount code")
  • Gift wrap, terms checkbox, donation line — if you turned those on

If any of those stay English, trust drops at the last step. That is when they have the card out.

The 3-Layer Setup (Theme Apps Skip Layer 3)

LayerWho owns itWhat breaks if you skip it
1. Locale + marketShopify Markets, domains or subfolders, language pickerShopper never enters /fr. Everything "works" in English
2. Theme stringsLocale JSON, Translate & Adapt, | t filtersDawn cart page is French; some labels still English
3. App chromeThe cart-drawer app's translation filesTheme is French; slide-out is English. This is the usual ticket

Layer 1 — Shopify: Settings → Markets. Add the country. Add the language. Use subfolders (/es, /de) unless you have a real reason for separate domains. Put a language switcher in the header. Shopify's Translate & Adapt docs cover storefront translation. They do not claim to rewrite third-party JavaScript.

Layer 2 — Theme: Hardcoded "Checkout" in a Liquid file will never switch. Wrap storefront copy in translation filters and fill locale files. Translate & Adapt can fill those. Preview each language in the theme editor.

Layer 3 — App: Ask the drawer app which locales it ships. If the answer is "use Translate & Adapt," they probably hardcoded the chrome. Oxify ships eight locales for drawer UI. Your custom upsell titles still need you to type Spanish. The button chrome should not.

Translate & Adapt Walkthrough (Free, Shopify-Native)

  1. Install Translate & Adapt from the App Store (Shopify's own app, free). Know its ceilings before you plan markets around it: auto-translation covers 2 languages, capped at 100 million characters per year; every language beyond those two is manual entry. A store can publish up to 20 languages total across its markets. Last checked August 20, 2026.
  2. Settings → Markets → pick the market → add the language and set it to Published. Unpublished languages translate nothing.
  3. Open Translate & Adapt → choose the language → work through Theme content. This is where cart strings live — "Your cart," "Checkout," "Subtotal."
  4. Auto-translate the batch, then manually fix the short UI strings (next section on why).
  5. Preview the storefront under the locale prefix (/es) and open the cart. Theme cart translated, drawer still English? That is layer 3 — the app, not Translate & Adapt.

Theme Locale Files (Where "Checkout" Actually Lives)

Dawn-style themes render cart labels through translation filters:

{{ 'sections.cart.title' | t }}
{{ 'sections.cart.checkout' | t }}

The values come from locales/en.default.json, locales/es.json, and so on. Edit them at Online Store → Themes → Edit code → Locales, or through Translate & Adapt's theme-content tab. If a label in your theme is a raw string instead of a | t filter — common after a freelancer "quick fix" — no translation app can switch it. Wrap it and add the key to each locale file.

How a Drawer App Knows Which Language You Speak

Worth understanding, because it explains most "why is it still English" tickets. A locale-aware drawer reads the storefront's active locale — Shopify exposes it to JavaScript (Shopify.locale and the theme's localization object) and in the URL prefix (/es, /fr). The app then loads its own shipped strings for that code. Three failure modes follow directly:

  • The shopper never entered the locale. No /es prefix, no Spanish drawer. That is a Markets/language-picker gap (layer 1), not the app.
  • The app matches exact codes only. A shopper on pt-PT may fall back to English if the app only ships pt-BR. Ask the app how fallbacks work.
  • The app caches the first locale it saw. Shopper switches language mid-session, drawer keeps the old one until reload. Test the switch with items already in the bag.

Third-Party Cart Apps: Two Very Different Answers

Ask your cart app one question: "How do your drawer strings translate?" There are only two honest answers.

Add translations dialog for cart drawer text with a language selector in Oxify

Oxify takes the second route: every text field in the drawer has an Add translations link that opens a per-language editor — pick the locale code, type the string, done. The drawer then serves the version matching the shopper's active locale instead of one hardcoded sentence for everyone.

  • Custom text fields per language (UpCart-style): the app gives you editable text boxes, and you paste the Spanish yourself. Works, but you maintain every string in every language, and new features ship in English until you notice.
  • Native locale support: the app reads the storefront locale and swaps its own shipped translations. Zero maintenance for chrome strings. Oxify does this for eight languages.

The third answer — "just use Translate & Adapt" — usually means hardcoded English you cannot fix.

Translate These Five Strings First

If you translate nothing else in the drawer, translate the strings shoppers read with a card in hand:

  1. Add to cart (the button that starts everything)
  2. Checkout
  3. The free-shipping bar ("You are €12 away from free shipping" — number and currency must localize too)
  4. Remove / quantity controls
  5. Discount-code errors ("Enter a valid discount code" — an English error on a Spanish store reads as a scam signal)

Auto-translation (DeepL, AI, Translate & Adapt's built-in) is fine for product descriptions. For these five, check by hand: short UI strings have the least context and the worst machine output. "Checkout" auto-translated as a noun instead of a verb is a classic. Two minutes per language.

Cart Page vs Cart Drawer (Locale Drop)

Shopify Community threads report /cart falling back to the default language while collection pages stay translated. A slide-out drawer often inherits the current page locale, so it looks "fixed" until someone opens a raw cart permalink.

Test this matrix per language:

  • Open the drawer on a collection page
  • Open /es/cart (or your locale prefix) if you still use a cart page
  • Open a cart permalink you sent from admin
  • Switch language with items already in the bag

If permalinks dump locale, add the prefix in the link (/fr/cart/...). Shopify's cart permalink docs allow a locale in the path.

Copy Rules That Survive Translation

  • Do not put the shipping threshold only in a screenshot of English. Drive the number from Markets / the rewards app so "12 €" is not a leftover " $12 ".
  • Keep upsell titles short. Long English puns die in German.
  • Match the announcement bar to the same locale. A French drawer under an English site-wide bar is the same bug in two places.
  • Terms checkbox labels must be translated too. A Spanish store with an English legal tick is worse than no tick. See terms in the cart drawer.

When Translate & Adapt Is "Not Working"

That query is almost never a Markets bug. It is the drawer JavaScript.

  • Theme cart page is Spanish. Slide-out still says Checkout / Remove / Empty cart in English.
  • Reward bar still has "$12 away from free shipping."
  • Your custom upsell title is translated (you typed it). The button chrome is not.

Fix: pick a cart drawer app that ships locales. Oxify's listing includes multi-language. If you already paid for Weglot, still open the drawer in each language. Shadow DOM and app embeds are the usual miss.

How This Compares to Ranking i18n Posts

Translate & Adapt tutorials and "best translation apps" roundups cover layers 1–2. Weglot-style apps cover the whole HTML. They rarely mention:

  • Cart-drawer JavaScript that never hits the DOM translator
  • /cart locale drop
  • Currency in the same breath as language (we split the deep dive, but we will not pretend language-only is done)

If you already paid for Weglot, still open the drawer in each language. If the overlay is a shadow DOM with English, Weglot may miss it. That is an app bug, not a Markets bug.

Frequently Asked Questions

Why is Translate & Adapt not working on my cart drawer?

It usually is working — on theme strings. Hardcoded drawer buttons live in the app's JavaScript. Translate & Adapt will not rewrite those. Use a drawer that ships locales, or expose the strings as translatable fields. That is also why Weglot sometimes misses the slide-out.

How many languages can Translate & Adapt handle for free?

Auto-translation: 2 languages, up to 100 million characters per year. Manual translation: any of the up to 20 languages a store can publish. There is no paid tier to raise the auto-translate limit as of August 2026 — past two languages you type, import, or use a third-party app like Weglot or Transcy for the theme layer. None of that touches app-drawer strings.

How many languages does Oxify's cart drawer support?

Eight: English, Spanish, French, German, Italian, Japanese, Portuguese (Brazil), and Danish. Your custom offer titles are still written by you in each language you care about. Currency display is configured with Markets — see the multi-currency guide.

Why is my cart page English when the shop is Spanish?

A common Community report: visiting /cart without the locale prefix drops the language. Use /es/cart (or your prefix). Prefer the drawer on localized pages. Test permalinks with the prefix included.

Why does my cart lose the language between pages?

Usually a link without the locale prefix. Any hardcoded href to /cart, /products/x, or a permalink resets the shopper to the default language; Shopify keeps the locale only while the prefix stays in the URL. Audit theme and app links, use Liquid URL filters that preserve locale, and test a full browse-add-checkout run per language.

How do I translate UpCart or another cart app's text?

Depends on the app's model. Apps with custom text fields (UpCart-style) let you paste translations per string per language — you maintain them. Apps with native locale support switch automatically with the storefront language. If the app offers neither, its strings are hardcoded and no translation app will reach them.

Is the 76% "won't buy in a foreign language" stat from Shopify?

No. It is from CSA Research's 2020 "Can't Read, Won't Buy" survey (8,709 people, 29 countries): 76% prefer their language; 40% will not buy otherwise. Use it as a 2020 research cite, not as your store's conversion rate.

Do I need a different cart app per country?

No. One drawer that reads the storefront locale is enough. You do need Markets, translated theme strings, and an app that actually ships those locales. Separate apps per country is how discount codes and inventory drift.

Should I translate upsell products too?

Yes. A French button that adds an English-titled product still feels half-done. Translate product titles and the offer sentence. Keep one SKU; do not clone the catalog per language unless Markets requires it for other reasons.

What to Do Next

Turn on the market. Translate theme strings. Open the drawer in every language. The leftover English list is your spec.

If that leftover is app chrome, Oxify Cart Drawer & Upsells includes those eight locales in the bag, plus the rest of the cart funnel, from $9.99/mo. Then finish money in the multi-currency guide.

Ask AI about Oxify App