How to Translate WooCommerce in WordPress – Products, Cart, Checkout, and Emails
Learn how to translate every part of a WooCommerce store with WPML. This covers products and variations, store categories and tags, cart and checkout pages (including the block-based checkout), customer order emails, missing strings from extensions, and how to handle untranslated products in each language. The procedure works for every product type WooCommerce supports.
For multi-currency setup, see How to add multiple currencies and payment gateways to a WooCommerce store. For the SEO-meta side – Yoast SEO and Rank Math meta titles, descriptions, and OG tags for translated products – see How to translate your site for multilingual SEO.
Before You Start
Install and activate these plugins on the same site:
- WooCommerce with at least one product in your catalogue.
- WPML core plus WPML String Translation and WPML Media Translation.
- WPML Multilingual & Multicurrency for WooCommerce (the compatibility add-on). Download it from your WPML account downloads page.
Configure your secondary languages at WPML > Settings > Languages before you start translating.
The free WooCommerce Multilingual plugin from WordPress.org handles multi-currency only. It doesn’t translate content. To translate your store, you need WPML and the compatibility add-on.
The Easiest Path – Translate Everything Automatically With PTC
If you want a fully translated WooCommerce shop with the least possible effort, turn on Translate Everything Automatically with PTC as your translation engine. Open WPML > Translations > Dashboard and switch the Translate Everything Automatically toggle to ON. PTC then translates every product, category, page, cart label, checkout field, and order email on your site automatically, in every language you’ve configured.
PTC translates with full context. It looks at your product images, your store’s terminology, and the language and tone you use across your shop. The result is translation that reads natively, doesn’t require manual review, and stays consistent as your shop grows.
The pricing model lets you experiment freely:
- You pay once per page × language for the content that’s translated.
- Edits and iterations are free until the content exceeds its previously paid-for length. Rewrite a product description, refine your headlines, A/B-test your copy – each update re-translates without a new charge.
- You only pay for the total amount of translated content, not for the number of edits.
This means you can keep optimizing your shop’s wording without worrying about the cost of every revision. The retranslations come along for free.
The rest of this page is for when you want manual control – sending specific products for translation in batches, editing translations in WPML’s Advanced Translation Editor, scanning for missing strings, configuring extension-specific settings. If Translate Everything Automatically covers your needs, you can stop reading here and let PTC handle the rest.
Translate Your WooCommerce Products and Variations
To translate WooCommerce products with WPML, open WPML > Translations > Dashboard and pick the products you want to translate. The Dashboard lists every product type your store sells: Simple, Grouped, External / Affiliate, Variable, plus extension types like Bookings and Subscriptions. Send them for translation in bulk. WPML routes each one to your chosen translation engine (PTC, DeepL, Google, or a professional translator).
For Variable products, the parent product and every variation translate together. Attribute names like Color or Size translate alongside their term values (Blue, Red, Small, Large). The Blue variation in English is the same product as Bleu in French.
PTC is WPML’s recommended AI engine. It translates product copy with image awareness: it looks at each product’s images while translating. Descriptions read the way a native shopper would describe the product. See the PTC documentation for how this works.
Variation Translation Sync on Product Save
On large catalogues with thousands of products and dozens of variations each, saving a product can write to every variation row in the database. This happens even on rows you haven’t changed. WPML 5 has a setting that fixes this. Open WPML > Settings > WCML and find the Variation translation sync on product save section. Two options:
- Always check all variations. On every save, WPML checks every variation in every language and syncs anything that’s out of date. The original behavior.
- Only sync variations edited in the editor. WPML syncs only the variations changed in this save. After each save, WPML shows what was synced and offers a one-click full sync.
For any catalogue with more than a thousand variations, Only sync variations edited in the editor is the recommended setting. It affects saves in the WooCommerce product editor only. The Translation Dashboard and Translate Everything Automatically always run a complete sync regardless of this option.
Translate Categories, Tags, and Shipping Classes (Taxonomies)
To translate WooCommerce categories, tags, attributes, and shipping classes, open WPML > Translations > Taxonomy. The Taxonomy tab lists every WooCommerce taxonomy on your site and lets you send terms for translation in bulk. Hierarchy is preserved. Translated child categories stay under their translated parents.
Translate the URL slug for each term too, so /shop/jackets/ becomes /boutique/vestes/ in French. Slug translation happens inline alongside the term name.
For sites with deep WooCommerce taxonomies, the Dashboard tab has a Taxonomies section that bulk-sends every taxonomy term at once. This is useful before any product translation runs. See Translating taxonomies for the bulk workflow.
Translate the Cart and Checkout – Including the Block-Based Checkout
To translate WooCommerce’s cart and checkout pages, open WPML > Translations > Strings. This covers both the classic shortcode-based checkout and the block-based checkout introduced in WooCommerce 8.3 and later. Every cart label, checkout field, button text, and confirmation message is registered there. The block-based checkout reads from the same source strings as the classic checkout, so one set of translations covers both.
If you don’t see specific cart or checkout strings in the Strings tab, scan for missing strings. See Translate Missing Strings From WooCommerce or Its Extensions below.
For custom checkout fields added by extensions or your theme, the compatibility add-on picks them up automatically when the extension or theme ships a wpml-config.xml file.
Translate the My Account Pages, Shipping Methods, and Payment Methods
To translate the customer-account flow, open WPML > Translations > Strings. This covers My Account pages, shipping method names and descriptions, and payment method names and descriptions. Every label WooCommerce renders to logged-in customers lives there:
- My Account pages. Dashboard greeting, Orders table headings, Downloads, Addresses, Payment Methods saved cards, Account Details, Logout. Custom endpoints added by extensions (e.g., Subscriptions, Memberships) translate as their plugin registers them.
- Shipping method names and descriptions. Flat rate, Free shipping, Local pickup, plus extension methods (DHL, FedEx, regional carriers). Translate the label that appears at checkout and the longer description that explains the method.
- Payment method names and descriptions. Stripe, PayPal, Square, Mollie, Klarna, and every gateway you have configured. Translate the name shown at checkout and the description shown on the order-confirmation page.
- Coupon descriptions. Coupon codes themselves stay the same across languages. The customer-facing descriptions, error messages (“Invalid coupon”, “Coupon expired”), and applied-coupon notices translate.
Run the Admin Texts Translation scanner if any of these labels don’t appear in the Strings tab. Extension-added labels sometimes require a one-time scan against the extension’s plugin file.
Translate Your WooCommerce Order Emails
To translate the order emails WooCommerce sends, open WPML > Translations > Strings. The emails covered include new order, processing, completed, cancelled, refunded, customer invoice, and customer-account creation. Every email subject, body, and footer is registered there, alongside the cart and checkout strings.
Each customer receives the email in the language they ordered in. WooCommerce records the order’s language at checkout. The compatibility add-on routes the email to the matching translation when the order’s state changes.
If you’ve customized your email templates in your theme or with a plugin like YayMail, additional template strings may need to be scanned for translation. See the missing strings section below.
Translate Missing Strings From WooCommerce or Its Extensions
If a label, message, or piece of text on your store isn’t translating, and you’ve already checked the Strings tab, the string isn’t registered yet. Open WPML > Translations > Strings, click the not seeing strings you are looking for? link, and run the Admin Texts Translation scanner against the source of the missing string (WooCommerce itself, a specific extension, or your theme). The scan finds untranslated strings and registers them so you can translate them like any other.
This is also where you’ll go for strings inside cart and checkout blocks that weren’t picked up by the initial sync, custom-built mini-cart widgets, and labels from less-common extensions. See Translating strings for the full scanner workflow.
Change a Product’s Original Language
If you’ve created a product in the wrong original language, or you’re migrating a store from a different multilingual setup, you can change a product’s source language without losing its translations. Open the product, switch the language in the post-editor language box, and reconnect any existing translations from the Translations panel. The procedure is the same as for any post or page. Products are not a special case.
Show Untranslated Products in Other Languages – Or Hide Them
By default, untranslated products don’t appear on language versions of the site where they haven’t been translated. A French visitor browsing your shop sees only the products with French translations. Some stores need the opposite: show all products on every language, falling back to the source-language version when no translation exists.
Configure this behavior at WPML > Settings > Post Types Translation. For the Products post type, choose:
- Translatable – only show translated items (default). Untranslated products are hidden in languages that don’t have a translation.
- Translatable – use translation if available or fallback to default language. Every product appears in every language. Untranslated ones display in the default language version.
The fallback option is useful for stores migrating a large catalogue gradually. Visitors see something rather than nothing while translations are being produced.
Translate Your WooCommerce Extensions – Category by Category
WPML supports more than 200 WooCommerce extensions, listed on WPML’s WooCommerce extensions section. Most extensions follow the same translation flow as core WooCommerce. Strings come through WPML > Translations > Strings. Products and taxonomies come through the Dashboard and Taxonomy tabs. Emails come through Strings. This section covers the practical specifics for each major category.
Translate Payment Gateways That Customers Pay With
To translate WooCommerce PayPal Payments, Klarna Checkout for WooCommerce, Mollie Payments for WooCommerce, Deposits & Partial Payments, or any other WPML-compatible gateway: open WPML > Translations > Strings and search for the gateway name (or its plugin’s text domain). Gateway names, descriptions, error messages, and Thank you page instructions register there. Combine with the multi-currency settings to show each customer only the gateways relevant to their currency. See How to Add Multiple Currencies and Payment Gateways.
Translate Shipping Method Names, Live-Rate Labels, and Tracking Notifications
To translate Table Rate Shipping, Advanced Shipment Tracking, Flexible Shipping, or shipping plugins for DHL Express, FedEx, UPS, Royal Mail, or Canada Post: shipping method names and descriptions live in WPML > Translations > Strings. Tracking-notification emails sent after the order ships also register as strings. Search for the tracking plugin’s text domain. For Parcel Panel Order Tracking and TrackShip for WooCommerce, the tracking page itself is rendered from string templates. Translate them through the Strings tab.
Translate Subscription Products, Membership Tiers, and Renewal Emails
To translate WooCommerce Subscriptions products: send the subscription product for translation from WPML > Translations > Dashboard like any other product. The subscription billing period, trial period, and synchronization-day labels translate as standard product fields. Recurring-payment emails translate through WPML > Translations > Strings. This covers renewal reminders, renewal failed, and renewal succeeded. For AutomateWoo workflows, every workflow’s email subject and body translate through Strings. Each automated message reaches the customer in the language they ordered in.
Translate Bookable Products, Time-Slot Labels, and Booking Confirmations
To translate WooCommerce Bookings: send the bookable product for translation from the Dashboard. Time-slot labels (Morning, Afternoon, Evening) and resource names register as strings if you’ve configured them in WooCommerce Bookings settings. Otherwise they’re translated alongside the product. Booking-confirmation emails translate through Strings. For Bookings and Appointments For WooCommerce Premium by PluginHive, the same flow applies. Products go through Dashboard. Emails and labels go through Strings.
Translate Product Bundles, Composite Products, and Custom Add-On Fields
To translate WooCommerce Product Bundles, Composite Products, and Mix and Match Products: each bundle, composite, or mix-and-match product translates as a single product through the Dashboard. Component names, group labels, and add-on field labels translate alongside the parent product. For WooCommerce Product Add-ons and other custom-field plugins (Advanced Product Fields, Extra Product Options & Add-Ons, WooCommerce Product Add-Ons Ultimate), each add-on field label and option value registers as a string under the plugin’s text domain. Translate them in the Strings tab. Attribute swatches (Iconic WooCommerce Attribute Swatches, Variation Swatches and Photos) translate the swatch tooltip text alongside the underlying attribute term name.
Translate Product Filters, Search Results, and Quick-View Modal Labels
To translate HUSKY / WOOF filter facet labels: open WPML > Translations > Strings and search for the filter’s text domain. Filter category names and option values (size, color, brand) register there. For YITH WooCommerce Ajax Product Filter, the same flow applies. WooCommerce Product Table (Barn2 Media) column headings translate through Strings. Row content comes from the products themselves and translates through the standard product flow. For WooCommerce Quick View Pro and similar quick-view plugins, modal labels (Quick View, Add to Cart, Close) register as strings. Product content inside the modal comes from the translated product.
Translate Coupon Descriptions, Dynamic-Pricing Rules, Wholesale Catalogs, and Loyalty Messages
To translate Advanced Coupons for WooCommerce coupon descriptions and error messages: open the coupon in WP admin and translate its description per language (coupons are a translatable post type). Dynamic-pricing rule labels and applied-discount text register as strings. This covers WooCommerce Dynamic Pricing (official), Dynamic Pricing With Discount Rules, and Advanced Dynamic Pricing for WooCommerce. For WooRewards loyalty messages and WebToffee WooCommerce Gift Cards redemption text, translate through Strings. For wholesale plugins like B2BKing, WooCommerce Wholesale Pro, and WooCommerce Wholesale Suite, tier names and B2B catalog labels translate as strings. Per-role pricing rules apply automatically based on the visitor’s role and language combination.
Translate PDF Invoices, Custom Email Templates, Reviews, and Wishlists
To translate WooCommerce PDF Invoices & Packing Slips Professional invoice and packing-slip templates: translate the template strings through WPML > Translations > Strings. WP Overnight’s PDF plugin reads from translated WooCommerce email and order strings. Once order emails are translated, PDFs follow. For WebToffee and acowebs PDF plugins, the same flow applies. For email customization plugins (YayMail Pro, WooCommerce Email Customizer, WooCommerce Email Template Customizer Premium), the visual editor lets you design per-language templates. Subject lines and body strings translate through Strings. For Customer Reviews for WooCommerce (CusRev) and Photo Reviews for WooCommerce, review-form prompts and rating labels register as strings. YITH WooCommerce Wishlist and TI WooCommerce Wishlist translate page labels through Strings. Wishlist titles (when shared) translate per language.
When an Extension’s Strings Don’t Appear in the Strings Tab
WPML auto-registers strings for compatible extensions. A newly installed or recently-updated extension may need a one-time scan before its strings appear. Open WPML > Translations > Strings, click the not seeing strings you are looking for? link at the top, and run the Admin Texts Translation scanner against the extension’s plugin file. The scan finds untranslated strings and registers them so you can translate them like any other.
If an extension you use isn’t on WPML’s WooCommerce extensions section, you can still translate its strings. Compatibility hasn’t been formally tested, though. Unusual edge cases may need a wpml-config.xml override or a one-time string scan.
Common Pitfalls
- Variation translation is slow on large catalogues. Switch Variation translation sync to Editor-scoped mode (above).
- Cart or checkout strings don’t translate after a WooCommerce update. Re-scan for strings via Admin Texts Translation. WooCommerce occasionally introduces new strings between releases that need re-registration.
- Custom-theme checkout templates that bypass WooCommerce’s standard hooks don’t pass strings through the compatibility layer. Theme-level changes may be required.
- Block-based checkout fields from a third-party extension sometimes need their own scan. Run the scanner specifically against that extension’s plugin file.
- Email language is wrong for re-sent emails. WooCommerce uses the order’s recorded language for the original send. Manually re-sending an email from the admin uses the admin language. To re-send in the customer’s language, switch the admin language first.
Written by Amir · Last updated July 2, 2026