How to translate a WooCommerce store (products, checkout & emails)

Updated Published 11 min read

In short

Translating a WooCommerce store means covering four separate layers: product content in your database, WooCommerce's own interface strings from language packs, the block-based Cart and Checkout that render in JavaScript via wp.i18n, and transactional order emails sent in the customer's language. Missing any one leaves English text at the point of purchase.

Key points

  • A WooCommerce store has four translation layers — product content, interface strings, JavaScript-rendered blocks, and emails — and they are handled by different mechanisms.
  • The block-based Cart and Checkout render client-side through wp.i18n, so tools that rewrite server HTML miss them entirely.
  • Order emails are generated at send time and must resolve the customer's language, not the admin's.
  • Language and currency are independent: translating to German does not switch prices to euros.
  • Test by completing a real checkout in each language and reading the confirmation email — nothing else catches all four layers.

Selling internationally means more than translating your product pages. A WooCommerce store has moving parts — cart, checkout, emails, and dynamic blocks — that all need to speak your customer's language, or you lose them at exactly the wrong moment: the point of payment.

The four layers of a translated store

Most WooCommerce translation problems come from not realising that a store's text arrives from four different places, handled by four different mechanisms. Fixing one does nothing for the others.

  1. Your product content — titles, descriptions, attributes. Lives in your database, translated by your multilingual plugin.
  2. WooCommerce's interface strings — "Add to cart", "Proceed to checkout". Ship as translations via WordPress language packs (WooCommerce Localization).
  3. Block-rendered Cart and Checkout — modern Woo renders these in the browser through wp.i18n, using JSON translation files, not server HTML.
  4. Transactional emails — generated at send time, in whichever locale the sending context resolves to.

A store can be fully translated in layer 1 and completely English in layers 2–4. That is the single most common outcome, and it is why "my products are translated but my checkout isn't" is such a frequent complaint.

What actually needs translating

  • Product content — titles, descriptions, short descriptions, and image alt text.
  • Product attributes and variations — sizes, colours, materials, and their values. "Colour: Red" needs both halves translated.
  • Categories and tags — plus their archive pages and any category descriptions.
  • Cart and checkout — every label, button, placeholder, and validation message.
  • Order and account emails — confirmations, processing, completed, refunds, invoices, password resets.
  • Store notices — "added to cart", coupon errors, stock warnings, shipping messages.
  • Policy pages — shipping, returns, terms, privacy. Often forgotten, and the pages a hesitant buyer actually reads.

The trap: JavaScript-rendered blocks

This is the one that costs stores real money, so it deserves the detail.

The modern WooCommerce Cart and Checkout are built as blocks that render in the browser with JavaScript. Their strings are not printed into the HTML by PHP — they are looked up client-side through wp.i18n against JSON translation files loaded with the script.

Any translation approach that works by intercepting and rewriting server output never sees those strings. The HTML that leaves your server contains a container element and a script tag; the words appear afterwards, in the browser. So the product page translates perfectly and the checkout stays English.

The fix is to make sure the relevant WordPress language packs are installed, so the JSON translation files those scripts request actually exist for the target locale. When you evaluate a translation tool, ask specifically how it handles block-based checkout — and then verify by loading the checkout in a non-source language and reading it.

Order emails: translated at send time

Transactional emails are generated when the event fires, not when the customer was browsing. If the sending context resolves to the site's default locale rather than the customer's, your German buyer gets a German storefront experience and an English order confirmation.

Emails also carry strings from several sources at once: WooCommerce's own templates, your store name and policy text, product titles from the database, and anything your theme or a plugin has filtered in. Getting the first three right and missing the fourth produces an email that is 90% translated, which reads worse than one that is plainly in English.

Test this directly. Place a real test order in each language and read the confirmation end to end.

Approaches

Automatic AI translation

A plugin such as Gloty translates product content, cart, checkout, and emails automatically, and installs the WordPress language packs so JavaScript-rendered blocks localize as well. This is the fastest path for most stores, particularly ones with large or frequently changing catalogues where per-product manual translation is not realistic. Estimate cost with the translation cost calculator.

Manual / per-product

Polylang and WPML let you translate each product by hand or with assistance. More editorial control, considerably more work — and WooCommerce support is frequently a separate add-on or a higher tier rather than part of the base licence, so check what the real total is before comparing prices.

Currency and formatting are separate problems

Language and currency are independent decisions, and conflating them causes real confusion. Translating your store into German does not switch prices to euros — and it should not, because a German-speaking customer in Switzerland pays in francs.

Multicurrency is a distinct feature: it needs exchange rates, rounding rules, and per-currency payment-method availability. Decide whether you need it alongside translation, and budget for it separately.

Number, date and address formats also vary by locale — decimal commas, day-first dates, postcode-before-city ordering. WooCommerce handles much of this through its locale settings, but it is worth verifying on a real checkout in each target market.

SEO for a multilingual store

Each translated product needs the same SEO hygiene as any multilingual page: a clean language-prefixed URL, reciprocal hreflang including x-default, a self-referencing canonical, and a translated title and meta description.

Product structured data should reflect the translated content — a German product page carrying English schema is a mixed signal about what you are selling. Include product URLs for every language in your sitemap, and verify with the hreflang checker. The full list is in the multilingual SEO checklist.

Pre-launch checklist

  • Add a product to the cart in each language and complete a test checkout — read every label, placeholder, and validation message.
  • Place a test order and read the confirmation email end to end in each language.
  • Confirm attribute names and values are translated on a variable product.
  • Check a product, a category archive, and the shop page for correct hreflang and language URLs.
  • Trigger an error deliberately — an invalid coupon, an out-of-stock item — and confirm the message is translated.
  • Read the shipping, returns and terms pages in each language.
  • Verify prices, decimal separators, and date formats display correctly per locale.

The checkout test is the one that matters most. It is the only step that exercises all four translation layers at once, and it is the exact moment a confused customer abandons the purchase.

Sources

Technical claims in this guide are drawn from the primary documentation and specifications below, each confirmed live on the date shown.

  1. WooCommerce Localization WooCommerce. Accessed .
  2. Internationalization — Plugin Handbook WordPress Developer Resources. Accessed .
  3. Translate WordPress (GlotPress) WordPress.org. Accessed .
  4. Tell Google about localized versions of your page Google Search Central. Accessed .
  5. Polylang Pro Polylang. Accessed .
  6. WPML Pricing and Plans WPML. Accessed .

FAQ

Why is my WooCommerce checkout still in English after translating?
The block-based Cart and Checkout render in the browser through wp.i18n rather than as server HTML, so any tool that translates by rewriting server output never sees those strings. The fix is to have the relevant WordPress language packs installed so the JSON translation files those scripts request exist for the target locale.
Does translating my store also change the currency?
No. Language and currency are independent — translating to German will not switch prices to euros, and it shouldn't, since a German speaker in Switzerland pays in francs. Multicurrency is a separate feature requiring exchange rates, rounding rules and per-currency payment methods.
Do I need a separate add-on to translate WooCommerce?
It depends on the tool. Polylang and WPML commonly sell WooCommerce translation as a separate add-on or a higher tier, so compare the real total rather than the entry price. Gloty includes WooCommerce translation in the core plugin.
Will my order emails be translated automatically?
Only if the sending context resolves to the customer's language rather than the site default. Emails also combine strings from WooCommerce templates, your store settings, product data, and any plugin filters — so test by placing a real order in each language and reading the confirmation end to end.
Do product attributes and variations get translated?
They need to be, and both halves matter — the attribute name and its values. A variable product showing a translated "Colour" label with English values like "Red" and "Blue" is a common oversight. Check a variable product specifically, since simple products won't reveal the problem.

Gloty makes WordPress multilingual automatically — AI translation, hreflang, and clean URLs, stored in your own database.

Try Gloty free
Go multilingual free
Open source · your data stays yours
Start free