WooCommerce Multilingual – WPML vs Polylang (Complete 2026 Guide)

Selling in one language means leaving money on the table. Here’s how to go global without breaking your store.

If you’ve been following this series, you’ve already set up your store, sorted out taxes, and started selling. But there’s a massive opportunity you might be missing: international customers.

Think about it. Your store is in English. But what about Spanish speakers in Latin America? French speakers in Europe? German speakers in Germany, Austria, and Switzerland? Millions of potential customers who would happily buy from you — if only they could understand your store.

The data is compelling. A 2024 study found that 76% of online shoppers prefer to buy products in their native language. And 40% will not buy from a website in a different language at all. That’s not a small percentage. That’s a massive chunk of potential revenue you’re leaving on the table.

But a multilingual store isn’t just about translating words. It’s about localisation — adapting your entire shopping experience to each market. That means:

  • Translating every product description, title, and attribute
  • Localising your checkout, cart, and My Account pages
  • Supporting multiple currencies with real‑time exchange rates
  • Offering local payment methods that customers trust
  • Adapting shipping and tax rules per country
  • Optimising SEO for each language with proper hreflang tags
  • Translating transactional emails so customers understand their order status

In this guide, I’ll walk you through everything:

  • What a multilingual WooCommerce store really involves
  • WPML vs Polylang – the two leading solutions compared in detail
  • Step‑by‑step setup for each plugin (with screenshots and explanations)
  • Translating products, pages, emails, and checkout
  • Adding multi‑currency support (why it matters and how to do it)
  • SEO considerations for multilingual stores (hreflang, URL structure, sitemaps)
  • Localisation beyond translation (currencies, payments, shipping, date formats)
  • Which plugin is right for your store

By the end, you’ll have a store that speaks your customers’ language — literally and figuratively.

Part 1: What Is a WooCommerce Multilingual Store?

A multilingual WooCommerce store is exactly what it sounds like: an online store that offers content in multiple languages. But it’s more than just slapping a Google Translate widget on your site (please don’t do that — it’s a terrible experience and terrible for SEO).

What a proper multilingual store includes

1. Front‑end translation:

  • Product titles and descriptions
  • Product attributes (size, colour, material, etc.)
  • Product variations (each variation option in every language)
  • Product categories and tags
  • Store pages (About, Contact, Blog, etc.)
  • Cart and checkout pages
  • My Account page (login, orders, downloads, addresses)
  • System messages (“Added to cart”, “Out of stock”, etc.)
  • Navigation menus

2. Back‑end translation:

  • Admin interface (so you can manage the store in multiple languages)
  • Email notifications (order confirmations, shipping updates, password resets)

3. Localisation (beyond translation):

  • Currency switching (display prices in local currencies)
  • Payment method availability (iDEAL for Netherlands, SOFORT for Germany, etc.)
  • Shipping zones and rates per country
  • Tax rules (VAT rates per country — covered in the previous article)
  • Date and number formats

What it takes to run a multilingual store successfully

Running a multilingual store is a significant commitment. Here’s what you need:

RequirementWhy it matters
Dedicated multilingual pluginWPML or Polylang (we’ll cover both)
Content strategyYou need content in each language, not just machine translations
Ongoing maintenanceWhen you update a product in one language, you need to update it in all languages
SEO knowledgehreflang tags, translated slugs, separate sitemaps
Localisation expertiseUnderstanding each market’s preferences (currencies, payments, shipping)
BudgetTranslation costs — either AI (cheaper) or professional (more accurate)

The business case for going multilingual

If you’re still wondering whether it’s worth the effort, consider these numbers:

  • 75% of online shoppers prefer buying in their native language (CSA Research, 2024)
  • 40% will never buy from a site in a different language
  • Stores with multilingual content see up to 50% higher conversion rates from non‑English markets
  • Multilingual SEO gives you access to search volumes you simply don’t have in English only

If you’re selling plugins or digital products, the case is even stronger. Your product has no shipping costs, no customs delays, no physical barriers. The only barrier is language.

💡 If you’re selling digital products (like WordPress plugins), you can sell to the entire world — if you speak their language.

The three most important things to plan before you start

Before you install any plugin, plan these elements carefully:

1. Which languages? Start with one extra language. Don’t try to translate into 10 languages at once. Pick one market with clear demand. For most stores, Spanish is a great first choice — it’s spoken by over 500 million people across multiple continents.

2. Translation method? Who will translate? Professional translators are expensive but accurate. AI translation (WPML’s PTC or DeepL) is cheaper but may need review. Bilingual team members can help but take time away from other work.

3. URL structure? How will you structure your URLs? Subdirectories (/es/), subdomains (es.yourstore.com), or separate domains (yourstore.es). Subdirectories are recommended for most stores.


Part 2: WPML vs Polylang – The Head‑to‑Head Comparison

WPML and Polylang are the two most established WordPress multilingual plugins. Both store translations in your database and have substantial user bases. But they take very different approaches to pretty much everything.

Let me break down the differences in detail so you can make an informed decision.

At a glance comparison

DimensionWPMLPolylang
Pricing for WooCommerce site€99/year (Multilingual CMS, 3 sites, all features, PTC AI included)€139/year (Business Pack — Polylang Pro + Polylang for WooCommerce, 1 site)
Free tierNone — 30‑day money‑back guaranteeYes — manual translation, no AI, unlimited languages
AI translationPTC — built in, default for new sitesDeepL only, on Pro tier; free version has no AI
WooCommerce integrationIncluded free (WCML); multi‑currency & per‑currency gatewaysSeparate purchase (Polylang for WooCommerce); no multi‑currency
Elementor compatibility✅ Dedicated compatibility code❌ Officially “currently not compatible” per Polylang’s own docs
Translation workflowCentral Translation Dashboard with queue, roles, 70+ professional service integrationsPer‑page workflow only; no central queue
Setup wizard✅ Auto‑detects what your site uses❌ Manual
Translation of attributes✅ Full support✅ Full support
Translation of variations✅ Full support✅ Full support
Multiple domain support✅ Yes✅ Yes
SEO integration✅ RankMath, Yoast, All in One SEO✅ RankMath, Yoast, All in One SEO
Support✅ Priority support included✅ Polylang Pro includes support
Refund policy30 daysNot specified

Understanding WPML’s pricing in detail

WPML’s Multilingual CMS plan costs €99 per year and includes:

  • The core WPML Multilingual CMS plugin
  • WooCommerce Multilingual (WCML) — for translating products, checkout, emails, and multi‑currency
  • String Translation — for translating theme and plugin strings
  • PTC AI translation credits (enough to translate a medium‑sized site)
  • Updates and support for 1 year
  • 3 sites included (you can install it on up to 3 different domains)

Renewal: After the first year, renewal is €79/year for continued updates and support. You can continue using the plugin without renewing, but you won’t get updates or support.

Understanding Polylang’s pricing in detail

Polylang’s pricing is more fragmented:

Polylang (free version):

  • Translation of posts, pages, media, categories, post tags, and custom taxonomies
  • Unlimited languages
  • No WooCommerce support
  • No AI translation
  • No multi‑currency
  • Manual translation only

Polylang Pro: €99/year

  • All free features
  • DeepL translation integration
  • Support for custom post types and custom taxonomies
  • Translations can be managed in a single screen

Polylang for WooCommerce: €99/year

  • WooCommerce translation capabilities
  • Translation of products, variations, categories, tags, attributes
  • Translated store pages (cart, checkout, my account)
  • Translated emails

Polylang Business Pack: €139/year

  • Polylang Pro + Polylang for WooCommerce
  • Best value if you need both

The catch: Polylang Business Pack is for a single site. If you have multiple sites, you need a separate license for each.

💡 If you have multiple sites, WPML’s 3‑site license is much better value.

Translation quality: PTC vs DeepL

WPML’s Private Translation Cloud (PTC) was scored higher than DeepL in a recent translation quality review across Arabic, English, French, German, Italian, and Spanish. PTC outperformed DeepL on every quality dimension measured — accuracy, fluency, terminology consistency, and cultural appropriateness.

What this means in practice:

  • With PTC, most pages are ready to publish without a human review step
  • With Polylang Pro’s DeepL integration, every page typically needs review before it’s safe to ship
  • If you’re not willing to review every translation manually, WPML’s PTC will save you significant time

The Elementor gap — significant for many users

This is a big one. Polylang’s own documentation states Polylang Pro is “currently not compatible with Elementor and some builders”. Compatibility is available via “Polylang Connect for Elementor”, a third‑party plugin that costs extra and adds complexity.

Even with that connector, automatic translation through DeepL doesn’t work for Elementor content — pages built in Elementor have to be translated manually. That means if you have dozens of Elementor pages, you’re looking at hours of manual work.

WPML maintains dedicated compatibility code for Elementor. It’s built in, works automatically, and supports both manual and AI translation.

⚠️ If you use Elementor (or any other page builder), WPML is the safer choice.

Multi‑currency: WPML wins outright

This is non‑negotiable for serious international stores. Polylang for WooCommerce does not include multi‑currency support. You’ll need a separate currency plugin like:

Currency pluginPriceIntegration with Polylang
CURCY – WooCommerce Multi Currency$79/yearWorks alongside Polylang but adds complexity
Shills Multi Currency ManagerFree (basic) / $49 (pro)Basic integration
Advance WooCommerce Currency Switcher$25 (one‑time)Limited integration
WooCommerce Currency Switcher by Aelia$49/yearWorks but not officially integrated

Adding a separate currency plugin means:

  • More plugins to maintain
  • Potential compatibility issues
  • Additional cost
  • User experience may be less smooth (currency switcher may not follow language selection)

With WPML, multi‑currency is built into WooCommerce Multilingual (WCML) . One plugin, seamless integration, automatic exchange rate updates, and a currency switcher that can follow language selection.

The setup experience: WPML is easier

WPML setup wizard:

  1. Install the plugins
  2. Click “Setup” in the WPML menu
  3. Auto‑detects your WordPress language, theme, and plugins
  4. Guides you through adding languages, choosing URL structure, and translating content
  5. Provides a checklist of what to do next
  6. Works out of the box with most themes and plugins

Polylang setup:

  1. Install the plugin
  2. Add languages manually
  3. Configure URL structure manually
  4. Set up language switcher manually
  5. If using Elementor, install and configure Polylang Connect for Elementor (third‑party plugin)
  6. Configure translations manually

Which one should you choose? Decision matrix

Your situationRecommendationWhy
Budget‑conscious, comfortable with manual translation, not using ElementorPolylang (free) + Polylang for WooCommerce (if needed)Cheaper, but more manual work
Need AI translation to save timeWPMLPTC is built in and more accurate than DeepL
Need multi‑currencyWPMLPolylang requires a separate, less integrated plugin
Using ElementorWPMLPolylang’s Elementor support is third‑party and unreliable
Complex store with many productsWPMLBetter translation workflow and central management
Small catalogue, simple needsPolylangGood enough for simple stores
Running multiple sitesWPML3‑site license is better value than multiple single‑site Polylang licenses
Want to save timeWPMLSetup wizard and AI translation save hours
Want to save money upfrontPolylangFree version exists, but you’ll pay in time

My honest recommendation: If you can afford €99/year, WPML is the better investment. The AI translation alone saves countless hours, and multi‑currency is essential for serious international sales. The setup wizard gets you started in minutes, not hours. And the 3‑site license is excellent value if you have multiple projects.

If you’re just starting out and really can’t afford €99/year, start with Polylang (free version). You can always migrate to WPML later (WPML provides an import tool for Polylang translations).

Part 3: Step‑by‑Step – Setting Up WPML for WooCommerce

This is the most common and recommended approach for most stores. Let’s walk through the entire setup process in detail.

Step 1: Install and activate required plugins

To translate WooCommerce with WPML, you need to install and activate these plugins:

Essential (3 plugins):

  1. WPML Multilingual CMS – the core plugin that powers everything
  2. WPML String Translation – translates theme strings, buttons, system messages, and plugin texts
  3. WooCommerce Multilingual & Multicurrency (WCML) – the WooCommerce add‑on

Where to get them:

  1. Purchase WPML Multilingual CMS from WPML.org (€99/year)
  2. Download the ZIP file
  3. In your WordPress admin, go to Plugins → Add New → Upload Plugin
  4. Upload the WPML ZIP file and activate it
  5. In the WPML dashboard, you’ll see available plugins under Plugins → Add New → Commercial. Install and activate String Translation and WooCommerce Multilingual from there.

What you’ll see:

  • WPML Multilingual CMS adds a new menu item: WPML
  • WooCommerce Multilingual adds a submenu under WooCommerce: WooCommerce → WCML

💡 WooCommerce Multilingual is completely free once you have a WPML CMS license. No additional purchase required.

Step 2: Run the setup wizards

After installing and activating the plugins, you’ll see setup wizards. Don’t skip these — they save massive time.

WPML Setup Wizard (the core setup):

  1. Go to WPML → Setup (or you’ll be redirected automatically)
  2. The wizard detects your site’s current language and asks which languages you want to add
  3. Choose your languages — for example, your site is in English, and you want Spanish and French
  4. Choose your URL structure:
    • Different languages in directories (/es//fr/) — recommended
    • Different languages in domains (es.yourstore.comfr.yourstore.com)
    • Language as parameter (?lang=es) — not SEO‑friendly, avoid
  5. The wizard automatically creates translated versions of your existing pages (if they don’t exist yet)
  6. For new sites, you’ll see placeholder pages for each language
  7. Click “Done” — the wizard completes

WooCommerce Multilingual Setup Wizard (WCML):

  1. Go to WooCommerce → WCML (or click the link in the WPML setup wizard)
  2. The wizard appears — click “Start”
  3. It asks: “Do you want to translate WooCommerce pages automatically?”
    • Yes — creates translated versions of your store pages (Shop, Cart, Checkout, My Account)
    • No — you’ll create them manually
  4. Choose which product attributes to translate:
    • All attributes — all attributes become translatable
    • Only specific attributes — you choose which ones
  5. Optionally, add multiple currencies:
    • If you plan to sell in multiple currencies, enable this now
    • Add currencies (e.g., USD, GBP, EUR)
    • Choose how exchange rates update (automatic or manual)
  6. Click “Finish” — WCML is configured

💡 If you skipped multi‑currency during setup, you can add it later in WooCommerce → WCML → Currencies.

Step 3: Add your languages (if you didn’t during setup)

If you need to add more languages later:

  1. Go to WPML → Languages
  2. Click “Add language”
  3. Choose from the list (you’ll see all available languages with their flags)
  4. The new language is added to your site
  5. You can now create translations for content in this language

Language settings to configure:

  • Language switcher — choose where to display language switcher (menu, widget, footer, etc.)
  • URL structure — choose how language appears in URLs
  • Language detection — choose how to detect user’s language (browser language, URL, etc.)

Step 4: Translate your products

This is the most important part — your products need to be understandable in each language.

Option A: Using the Translation Dashboard (recommended for multiple products)

  1. Go to WPML → Translation Dashboard
  2. You’ll see a list of all translatable content (posts, pages, products, etc.)
  3. Select the products you want to translate
  4. Choose your translation method:
    • “Translate this yourself” — you’ll use the WPML Translation Editor
    • “Translate by a professional” — send to one of 70+ translation services
    • “PTC” — Private Translation Cloud (WPML’s AI translation)
  5. Click “Translate” — the content appears in the Translation Editor
  6. In the Translation Editor, you’ll see the source language on the left and target language on the right
  7. Translate each field: title, description, short description, attributes
  8. Save — translation is complete

Option B: Translating an individual product (for quick edits)

  1. Edit a product in your main language (e.g., English)
  2. In the product edit screen, you’ll see a language switcher in the top bar
  3. Click the “➕” icon next to your target language (e.g., Spanish)
  4. A new product edit screen appears — this is the Spanish version
  5. Enter the translated title, description, and all other fields
  6. Save — the Spanish version is complete

💡 When you update a product’s price or stock in the main language, it automatically updates across all translations. You don’t need to update each language separately for price/stock.

Step 5: Translate product variations and attributes

Variable products (with size, colour, or other options) need special attention.

Translating attributes:

  1. Go to Products → Attributes
  2. For each global attribute you’ve created (e.g., “Size”), you’ll see language icons
  3. Click the language icon to add translations
  4. Enter the translated attribute label (e.g., “Taille” for French, “Tamaño” for Spanish)
  5. For each term (e.g., “Small”, “Medium”, “Large”), repeat the process
  6. The translated terms will appear in product variations automatically

Translating variations:

  1. When you translate a variable product, all variations are listed in the Translation Editor
  2. Each variation has its own fields: description, price (if you set prices per variation), and attributes
  3. Translate each variation’s attributes (e.g., “Small” → “Pequeño” in Spanish)
  4. If you want different prices per country, you can set this in WCML’s multi‑currency section

💡 WCML can also let you assign different prices per language. For example, if your product costs $50 in the US, you might sell it for €45 in Europe (accounting for currency differences).

Step 6: Translate your store pages

When you set up WCML, translated versions of Cart and Checkout pages are auto‑created for each active language. For most stores, no additional steps are needed.

If you add languages later, or want to check the translations:

  1. Go to Pages → All Pages
  2. You’ll see your store pages (Shop, Cart, Checkout, My Account) with language icons
  3. Click the language icon to edit each page
  4. The shortcodes (e.g., 
    Your cart is currently empty.

    Return to shop

    ) remain the same — you just need to translate any custom text you’ve added

Step 7: Set up multi‑currency

This is where WPML really shines. Here’s how to set it up:

  1. Go to WooCommerce → WooCommerce Multilingual → Currencies
  2. Click “Add currency”
  3. Choose your currency (e.g., GBP for UK, EUR for Europe)
  4. Configure the currency format:
    • Symbol position — before or after the amount
    • Thousand separator — comma or space
    • Decimal separator — period or comma
  5. Set your exchange rate:
    • Manual — enter the rate yourself
    • Automatic — updates daily (requires an API key)
  6. Choose which currencies appear for which languages:
    • All currencies for all languages — customer can switch independently
    • Currency follows language — English customers see USD, Spanish see EUR, etc.
  7. Choose the currency switcher display:
    • List — full currency list (e.g., “$ USD”, “€ EUR”)
    • Dropdown — dropdown menu with currencies
    • Flags — flag icons representing countries

Pricing options (important):

Pricing modeWhat it doesBest for
Automatic conversionPrices convert at current exchange rateSimple stores, fewer products
Fixed prices per currencyYou set a specific price for each currencyStores wanting control over pricing strategy
HybridMain currencies fixed, secondary auto‑convertedMost common — you control major markets

Step 8: Translate emails

WCML allows you to translate WooCommerce transactional emails so customers receive order confirmations, shipping notifications, and more in their language.

  1. Go to WooCommerce → WooCommerce Multilingual → Emails
  2. You’ll see a list of all WooCommerce email templates:
    • New Order (admin)
    • Completed Order (customer)
    • Processing Order (customer)
    • Cancelled Order
    • Refunded Order
    • Customer Note
    • Password Reset
  3. Click each email template and translate all fields:
    • Subject — the email subject line
    • Heading — the email heading
    • Content — the full email body
  4. For each language, the customer will receive emails in their selected language.

💡 Your email service provider (if you’re using one for marketing) may also support multilingual emails. Klaviyo and Mailchimp both support language‑based segmentation.

Step 9: Translate system strings

WooCommerce, your theme, and other plugins use “strings” — small pieces of text like “Add to cart”, “Out of stock”, “Login”, etc. These need translation too.

  1. Go to WPML → String Translation
  2. You’ll see all strings from your theme, plugins, and WooCommerce
  3. Filter by domain:
    • woocommerce — WooCommerce strings
    • woocommerce-payments — WooPayments strings
    • kadence — Kadence theme strings (if you’re using Kadence)
  4. For each string, enter the translation in each language
  5. Save — translations are applied immediately

💡 Most strings are automatically translated by WPML, but occasionally you’ll find one that needs manual adjustment. This is where you fix it.

Part 4: Step‑by‑Step – Setting Up Polylang for WooCommerce

Polylang takes a different, more manual approach. It’s lighter and free for basic use, but requires more effort.

Step 1: Install and activate plugins

Essential plugins:

  1. Polylang – free from WordPress.org
  2. Polylang for WooCommerce – €99/year, separate purchase

Where to get them:

  1. Go to Plugins → Add New and search for “Polylang”
  2. Install and activate the free version
  3. Purchase Polylang for WooCommerce from Polylang’s website
  4. Upload and activate it

💡 Polylang for WooCommerce is a separate purchase costing €99/year. The Business Pack (Polylang Pro + Polylang for WooCommerce) costs €139/year for a single site.

Step 2: Set up languages

  1. Go to Languages → Add New
  2. Enter the language name (e.g., “Español”, “Français”)
  3. Choose the language code (e.g., “es”, “fr”)
  4. Choose the country flag
  5. Click “Add Language”

Language settings to configure:

  1. Go to Languages → Settings
  2. Under “URL modifications”, choose your URL structure:
    • The language is set from the directory name in pretty permalinks (/es//fr/) — recommended
    • The language is set from the subdomain name (es.yourstore.comfr.yourstore.com)
    • The language is set from a parameter (?lang=es) — avoid
  3. Under “Default language”, choose which language is shown to new visitors
  4. Under “Detect browser language”, choose whether to auto‑redirect based on browser settings

Step 3: Translate products and pages

Polylang adds a language column inside your WooCommerce product list. Here’s how to use it:

Translating a product:

  1. Go to Products → All Products
  2. You’ll see a new “Languages” column showing each product’s language
  3. Hover over the product you want to translate — you’ll see a “➕” icon for each language
  4. Click the “➕” for your target language (e.g., Spanish)
  5. This opens a new product edit screen — this is the Spanish version
  6. Fill in the translated fields:
    • Product title
    • Description
    • Short description
    • Attributes
    • Variations (if variable product)
  7. The price, stock, and SKU are automatically copied from the original — you don’t need to re‑enter them
  8. Publish the translation

💡 Polylang for WooCommerce allows you to translate product categories, tags, and global attribute terms. You’ll find the translation icons in the respective admin screens.

Translating pages:

  1. Go to Pages → All Pages
  2. Find the page you want to translate (e.g., “Home”)
  3. Click the “➕” icon for your target language
  4. Fill in the translated page title and content
  5. Publish the translation

Step 4: Set up currency (separate plugin needed)

Polylang for WooCommerce does not include multi‑currency. You’ll need a separate plugin:

Option A: CURCY – WooCommerce Multi Currency

  1. Purchase CURCY from CodeCanyon ($79/year)
  2. Install and activate
  3. Go to CURCY → Settings
  4. Choose which currencies to support (e.g., USD, EUR, GBP)
  5. Configure exchange rates (manual or automatic)
  6. Under “Display”, choose where to show the currency switcher
  7. Choose whether currency follows language selection:
    • Yes — English → USD, Spanish → EUR
    • No — customer can choose independently

Option B: Shills Multi Currency Manager

  1. Install from WordPress.org (free version)
  2. Go to Shills → Settings
  3. Add currencies
  4. Configure exchange rates
  5. Choose display location

Option C: WooCommerce Currency Switcher by Aelia

  1. Purchase from Aelia ($49/year)
  2. Install and activate
  3. Configure currencies and exchange rates

⚠️ Adding a separate currency plugin means more plugins to maintain, potential compatibility issues, and additional cost. With WPML, multi‑currency is built in.

Step 5: Translate strings

To translate theme strings, WooCommerce system messages, and other fixed text:

  1. Go to Languages → Translations
  2. Find the string group you need to translate:
    • WooCommerce — WooCommerce system strings
    • Your theme — theme strings
    • Plugins — other plugin strings
  3. Use the search function to find specific strings
  4. Enter translations for each string
  5. Save — translations are applied immediately

Example strings you’ll find:

  • “Add to cart”
  • “Out of stock”
  • “Your cart is empty”
  • “Proceed to checkout”

💡 If you can’t find a specific string, check if it’s in your theme’s translation files. Some theme strings aren’t registered for translation by Polylang — you may need to add them manually.

Step 6: Translate emails

Polylang for WooCommerce supports email translation:

  1. Go to WooCommerce → Settings → Emails
  2. Click on each email template
  3. At the top of the email settings screen, you’ll see language tabs
  4. Switch to each language tab and translate:
    • Email subject
    • Email heading
    • Email body content
  5. Save each translation

💡 If you’re using a marketing email service (Klaviyo, Mailchimp), you’ll need to set up language‑based segmentation there separately.

Part 5: Managing Translations – Best Practices and Common Pitfalls

Regardless of which plugin you choose, here are the key principles for managing multilingual content effectively.

1. Maintain product synchronisation

Stock levels, prices, and inventory should stay synchronised across language versions. Both WPML and Polylang for WooCommerce handle this automatically.

But watch out for:

  • Manually editing price or stock in a translation — it won’t sync back to the main language. Always edit these in the main language.
  • If you’re using multi‑currency, ensure your exchange rates are updating regularly.

2. Translate attributes and variations carefully

Variable products with multiple attributes require careful translation. If attribute structures aren’t defined properly, you’ll see inconsistencies across languages.

Best practice for attributes:

StepWhat to do
1Create attributes in your main language first (e.g., “Size” with values “Small”, “Medium”, “Large”)
2Translate each attribute label (e.g., “Size” → “Talla” in Spanish)
3Translate each attribute value (e.g., “Small” → “Pequeño”)
4When creating variations, ensure variations exist in all languages

3. Keep URLs clean

Translate product and category slugs for SEO:

LanguageOriginalTranslated slug
English/product/red-shirt//product/red-shirt/
Spanish/product/red-shirt//producto/camisa-roja/
French/product/red-shirt//produit/chemise-rouge/
German/product/red-shirt//produkt/rotes-hemd/

How to translate slugs in WPML:

  1. Edit the product translation
  2. Find the “URL slug” field (usually under the title)
  3. Enter the translated slug
  4. Save

How to translate slugs in Polylang:

  1. When creating a product translation, the slug field appears
  2. Enter the translated slug
  3. Publish

💡 Don’t change slugs after publishing unless you set up 301 redirects. Changing a slug breaks existing links and backlinks.

4. Update translations when products change

When you update a product in your main language, remember to update its translations.

WPML: The Translation Dashboard shows which products need updates. You’ll see a yellow “Update” icon next to products that have changed in the source language.

Polylang: You’ll need to check manually. There’s no central dashboard showing what needs updating.

Best practice: When you update a product, immediately update its translations. Don’t let them drift out of sync.

5. Use a translation memory (TM)

Translation memory stores previously translated phrases so you don’t pay to translate the same thing twice.

WPML: PTC includes translation memory. Professional translators also use TM. Your translations are stored and reused across your site.

Polylang: Polylang Pro’s DeepL integration doesn’t include a built‑in translation memory. If you’re using professional translators, they’ll have their own TM.

💡 Translation memory is especially valuable for product descriptions that share common phrases (“Made from premium materials”, “Free shipping”, etc.).

6. Quality control checklist

Before publishing translations, check:

CheckWhy it matters
Terminology consistencyUse the same terms for the same concepts across products
Localised measurementsConvert imperial to metric, date formats, etc.
Localised pricingAccount for currency differences and local purchasing power
Cultural appropriatenessAvoid idioms, references, or humour that don’t translate well
ImagesAre any images text‑heavy and need replacement?
CheckoutTest a purchase in each language to ensure the flow works

7. Common mistakes to avoid

MistakeProblemFix
Machine translation onlyInaccurate translations, cultural misstepsAlways review machine translations
Incomplete translationsProducts with translated title but untranslated descriptionUse a checklist to ensure all fields are translated
Inconsistent terminologyConfusing UXUse a glossary for key terms
Forgetting imagesImages with English text remainCreate separate images for different languages or use text‑free images
Forgetting system strings“Add to cart” remains in EnglishCheck String Translation for all WooCommerce strings
Ignoring local currenciesPrices shown in wrong currencySet up multi‑currency correctly
Duplicate content in SEOGoogle sees duplicate content across languagesEnsure hreflang tags are correct

Part 6: SEO for Multilingual WooCommerce Stores

A multilingual store needs careful SEO setup to avoid duplicate content penalties and ensure the right language version appears in the right country’s search results. Google can penalise you for duplicate content if you’re not careful — and hreflang is how you tell Google this isn’t duplicate content, it’s content for different audiences.

6.1 URL structure — choose wisely

Choose one approach and stick with it. Changing URL structure later requires 301 redirects and can temporarily hurt rankings.

ApproachExampleSEO impactMaintenance effortRecommendation
Subdirectoriesyourstore.com/es/Best. Consolidates domain authority.Low✅ Recommended
Subdomainses.yourstore.comGood. Treated as separate sites.MediumAcceptable
Separate domainsyourstore.esSplits authority. Hard to maintain.High❌ Avoid for most
Query parameters?lang=esPoor. SEO‑unfriendly.Low❌ Never use

Why subdirectories are best:

When you use subdirectories (/es//fr/), all language versions share the same domain authority. Backlinks to your main domain benefit all language versions. With subdomains, Google treats them as separate sites, so SEO authority is split.

6.2 hreflang tags — The most important SEO element you need to get right

hreflang tags tell search engines which language version of a page to show to which user. Without them:

  • Google might show your Spanish page to English‑speaking users in the US
  • Google might show your English page to Spanish users in Mexico
  • Duplicate content penalties might be applied incorrectly
  • Users will see the wrong language and bounce — hurting your rankings

How hreflang works:

When a user searches on Google.es, Google looks at their language and location. If your page has hreflang tags, Google knows to show the Spanish version to that user.

Example hreflang output for a product page in English, Spanish, and French:

html

<link rel="alternate" hreflang="en" href="https://yourstore.com/product/red-shirt/" />
<link rel="alternate" hreflang="es" href="https://yourstore.com/es/producto/camisa-roja/" />
<link rel="alternate" hreflang="fr" href="https://yourstore.com/fr/produit/chemise-rouge/" />
<link rel="alternate" hreflang="x-default" href="https://yourstore.com/product/red-shirt/" />

What x-default means:

This is the fallback version. If a user’s browser language doesn’t match any of your supported languages, Google will show them the x-default version (usually your main language). This is important for users whose language you don’t support — they’ll at least see something.

How to verify hreflang is working:

  1. Visit any page on your site
  2. Right‑click → View Page Source
  3. Search for hreflang — you should see all language alternates listed
  4. Use Google Search Console’s International Targeting report to see if Google detects any hreflang errors

Common hreflang mistakes and how to fix them:

MistakeProblemFix
Missing return linksPage A links to Page B, but Page B doesn’t link back to Page AEnsure all language versions link to each other (your multilingual plugin should do this automatically)
Incorrect language codesUsing en-uk instead of en-gbUse standard ISO codes: en‑gben‑uses‑eses‑mx
Mixed HTTP/HTTPSSome pages use http://, others https://Force HTTPS site‑wide (use a plugin like Really Simple SSL)
Self‑referencing onlyEach page only references itself, not other languagesBoth plugins handle this automatically — don’t disable it
No x-defaultNo fallback for unsupported languagesAdd x-default to your main language version

6.3 Translate slugs (URLs) for better UX and SEO

Don’t leave product and category URLs in your main language. Translate them for better user experience and SEO.

LanguageOriginalTranslated slug
English/product/red-shirt//product/red-shirt/
Spanish/product/red-shirt//producto/camisa-roja/
French/product/red-shirt//produit/chemise-rouge/
German/product/red-shirt//produkt/rotes-hemd/

Why translated slugs matter:

  • Users are more likely to click on a URL they understand
  • Google reads URLs to understand page content
  • Translated slugs help localise search intent

How to translate slugs in WPML:

  1. Edit the product translation
  2. Find the “URL slug” field (usually under the title)
  3. Enter the translated slug
  4. Save

How to translate slugs in Polylang:

  1. When creating a product translation, the slug field appears
  2. Enter the translated slug
  3. Publish

Warning: Never change slugs after publishing unless you set up 301 redirects. Changing a slug breaks existing links, backlinks, and search engine indexation.

6.4 Translate meta data (SEO titles and descriptions)

RankMath and Yoast SEO both integrate with WPML and Polylang. When translating a product, you’ll see separate SEO meta boxes for each language.

What to translate:

ElementWhat it isWhy it matters
SEO TitleThe title that appears in search resultsPrimary ranking factor, influences CTR
Meta DescriptionThe snippet below the titleInfluences click‑through rate (CTR)
URL slugThe page URLImproves readability and relevance
Alt textImage descriptionsAccessibility + image SEO
Focus keywordThe keyword you’re targetingRankMath/Yoast focus keyword per language

Example: Translated SEO titles and meta descriptions

LanguageSEO TitleMeta Description
English“Red T‑Shirt – Buy Premium Cotton TeesYourStore”“Shop our premium red t‑shirt. 100% cotton, free shipping over $50. Order now.”
Spanish“Camiseta Roja – Comprar Camisetas de AlgodónTuTienda”“Compra nuestra camiseta roja premium. 100% algodón, envío gratis desde $50. ¡Pide ya!”
French“T‑Shirt Rouge – Achetez des Tees en CotonVotreMagasin”“Achetez notre t‑shirt rouge premium. 100% coton, livraison offerte dès $50. Commandez !”

💡 Keep meta descriptions under 160 characters to avoid truncation in search results. For other languages, aim for the equivalent character count (shorter for some languages, longer for others).

6.5 XML sitemaps — essential for indexation

XML sitemaps tell Google which pages exist on your site. For a multilingual store, you need sitemaps that include all language versions.

How WPML handles sitemaps:

WPML generates separate sitemaps for each language:

  • sitemap-en.xml (English)
  • sitemap-es.xml (Spanish)
  • sitemap-fr.xml (French)

It also generates a main sitemap (sitemap.xml) that references all language versions.

How to submit sitemaps in WPML:

  1. Go to Settings → Reading
  2. Ensure “Search Engine Visibility” is NOT checked (you want search engines to index your site)
  3. If using RankMath, go to RankMath → Sitemap Settings
  4. You’ll see the sitemap URL (e.g., yourstore.com/sitemap_index.xml)
  5. Submit this URL to Google Search Console
  6. In Google Search Console, go to Sitemaps → Add a new sitemap
  7. Enter the sitemap URL and submit

How Polylang handles sitemaps:

Polylang generates a single sitemap with language annotations. Each URL includes the language code in the <loc> tag.

What to check in Search Console for multilingual sitemaps:

ReportWhat to look for
CoverageAre all language versions indexed? Check each language separately
International TargetingDoes Google see your hreflang tags correctly?
SitemapsAre all sitemaps submitted and processed?
Mobile UsabilityAre all language versions mobile‑friendly?

6.6 Regional targeting (country‑specific SEO)

If you’re targeting specific countries, you should also set up country‑specific targeting in Google Search Console.

  1. Go to Google Search Console
  2. Select your property
  3. Go to International Targeting
  4. Under “Country”, select the country for each language version
  5. Google will prioritise showing that language version to users in that country

Example:

  • English version → target United States, United Kingdom, Canada
  • Spanish version → target Spain, Mexico, Argentina, Colombia
  • French version → target France, Canada (Quebec), Belgium

💡 Country‑specific targeting helps Google understand that your Spanish version is for Spanish users in Spain, not Spanish speakers in the US (who might prefer English).

Part 7: Localisation – Beyond Translation

Translation is just the start. A truly localised store adapts to each market’s specific preferences, behaviours, and expectations. This is what separates professional global stores from amateurs.

7.1 Currency localisation

This is non‑negotiable. When a customer sees prices in their own currency, they understand the value immediately. When they see prices in a foreign currency, they hesitate.

Why currency localisation matters:

BehaviourImpact
Customers prefer to see prices in their own currency80% of shoppers won’t buy if prices are in a different currency
Currency conversion adds frictionCustomers have to mentally calculate the cost
Trust and credibilityLocal currency signals you’re a legitimate local business

How to implement currency localisation:

With WPML (built‑in):

  1. Go to WooCommerce → WooCommerce Multilingual → Currencies
  2. Add your currencies (USD, EUR, GBP, etc.)
  3. Choose whether currency follows language or is independent
  4. Configure exchange rates (automatic or manual)
  5. Choose display format (symbol, position, separators)
  6. Enable the currency switcher (widget, menu, or shortcode)

With Polylang (need a separate plugin):

  1. Install a currency plugin (CURCY, Shills, etc.)
  2. Configure currencies and exchange rates
  3. Enable currency switcher
  4. Test that currency follows language if that’s what you want

Currency switcher placement:

LocationConversion impactBest for
HeaderHigh — always visibleMost stores
MenuHigh — part of navigationStores with large language selection
FooterLow — hidden at bottomMinimalist stores
PopupHigh — in‑your‑faceStores aggressively targeting international visitors

💡 Place the currency switcher near the language switcher. Users expect them to be together.

7.2 Payment method localisation

Different countries prefer different payment methods. If you only offer credit card and PayPal, you’re losing customers.

Preferred payment methods by country:

CountryPreferred methods
GermanyPayPal, credit card, Klarna, SOFORT
NetherlandsiDEAL, PayPal, credit card
FranceCarte Bancaire, PayPal, credit card
UKCredit card, PayPal, Klarna, Apple Pay
USCredit card, PayPal, Apple Pay, Google Pay
ItalyPayPal, credit card, PostePay
SpainPayPal, credit card, Bizum
Nordic countriesSwish, MobilePay, Vipps, credit card
Latin AmericaMercadoPago, PayPal, credit card
AsiaAlipay, WeChat Pay, credit card

How to implement payment method localisation:

  1. Enable multiple payment gateways in WooCommerce → Settings → Payments
  2. Configure conditional logic (payment methods appear based on customer location)
  3. Use a plugin like Conditional Payments for WooCommerce or Payment Methods by Country for WooCommerce

💡 The simplest approach: enable all payment methods and let customers choose. But for a more professional experience, show only the methods relevant to each country.

7.3 Shipping localisation

Different countries have different shipping costs, carriers, and delivery times.

How to implement shipping localisation:

  1. Go to WooCommerce → Settings → Shipping
  2. Create shipping zones for each country/region
  3. For each zone, create shipping methods:
    • Flat rate — fixed shipping cost
    • Free shipping — threshold‑based (e.g., free over $50)
    • Table rate — based on weight, quantity, or price
  4. If using a shipping plugin (ShipStation, Shippo), configure rates per country

Example shipping zones:

ZoneCountriesShipping rates
DomesticYour country$5 flat rate, free over $50
EUAll EU countries$15 flat rate
Rest of WorldAll other countries$25 flat rate

7.4 Tax localisation

Different countries have different tax rates (VAT in Europe, GST in Australia, sales tax in the US, etc.). This was covered extensively in the previous article on VAT.

Summary for multilingual stores:

  • Ensure taxes are calculated based on customer location
  • Display tax information in the local language and format
  • For EU, ensure VAT is applied based on destination country (OSS)
  • For US, ensure sales tax is applied based on shipping address

7.5 Date, time, and number format localisation

Different regions use different formats. If these are wrong, your store looks unprofessional.

RegionDate formatTime formatNumber format
USMM/DD/YYYY12‑hour (AM/PM)1,000.50
UKDD/MM/YYYY12‑hour (AM/PM)1,000.50
EuropeDD/MM/YYYY24‑hour1.000,50
GermanyDD.MM.YYYY24‑hour1.000,50
AustraliaDD/MM/YYYY12‑hour (AM/PM)1,000.50

How to set date and number formats:

  1. Go to WooCommerce → Settings → General
  2. Under “Currency options”, set:
    • Thousand separator — comma (,) or period (.)
    • Decimal separator — period (.) or comma (,)
    • Number of decimals — 2
  3. In WordPress → Settings → General, set:
    • Date format — choose based on your region
    • Time format — 12‑hour or 24‑hour

💡 If you have different regions, you may need a plugin that adapts these settings per language. WPML handles this automatically. Polylang requires additional configuration.

7.6 Address format localisation

Different countries have different address formats. A US address (street, city, state, ZIP) looks very different from a UK address (street, city, county, postcode) or a European address (street, house number, postal code, city, country).

How to handle address formats:

  • WooCommerce handles this automatically to some extent (address fields adapt based on selected country)
  • You can customise address fields using a plugin like Checkout Field Editor for WooCommerce
  • Ensure translated field labels match local expectations (e.g., “ZIP” vs “Postcode”)

7.7 Social proof localisation

Reviews and testimonials are powerful, but they’re only useful if customers can understand them.

What to localise:

  • Translated product reviews (if you have multilingual reviewers)
  • Localised testimonials (match the customer’s language)
  • Translated social media feeds (if embedding)

💡 If you don’t have reviews in every language, consider using a translation plugin that translates reviews automatically — or simply display reviews in their original language with a clear language tag.

Part 8: Performance Considerations for Multilingual Stores

Multilingual plugins add overhead. Every language adds more data, more database queries, and more complexity. Here’s how to keep your store fast.

8.1 Why multilingual stores are slower

Multilingual stores are slower for several reasons:

  • More database queries (checking for translations)
  • More content to load (multiple language versions)
  • More database tables (translation tables)
  • More complex caching (language‑specific caching)

Estimated overhead:

FeatureOverhead
WPML (basic)10‑20% slower on page load
WPML + WCML + multi‑currency20‑30% slower
Polylang (basic)5‑10% slower
Polylang + WooCommerce + currency plugin15‑25% slower

💡 These are estimates. Actual overhead depends on your hosting, theme, and other plugins. A good cache system can reduce this significantly.

8.2 Caching for multilingual stores

Most caching plugins (WP Rocket, W3 Total Cache, Litespeed) support multilingual stores — but you need to configure them correctly.

Key caching requirements:

RequirementWhy it matters
Language‑specific cachingEach language version has different content — they need separate caches
Currency‑aware cachingIf you support multiple currencies, each currency needs separate cache
Exclude cart/checkoutCart and checkout pages must be dynamic
Exclude user‑specific contentMy Account pages should not be cached

WP Rocket multilingual configuration:

  1. Go to WP Rocket → Cache
  2. Enable “Separate cache files for mobile devices”
  3. Under “Advanced”, add your languages to the cache prefix (WPML automatically handles this)
  4. Go to WP Rocket → File Optimisation
  5. Exclude the multilingual plugin’s scripts from minification (WPML scripts should be excluded)
  6. Test your store after enabling each caching option

💡 WP Rocket has excellent WPML support out of the box. For Polylang, you may need to adjust settings manually.

8.3 Hosting considerations

Multilingual stores need better hosting. The overhead means you’ll need more server resources.

Store sizeRecommended hosting
Small (<100 products, 2 languages)Shared hosting (SiteGround, Hostinger)
Medium (100‑500 products, 3‑5 languages)VPS or managed WordPress hosting (Kinsta, WP Engine)
Large (500+ products, 5+ languages)Dedicated server or enterprise hosting

💡 If you’re using WPML’s multi‑currency with 5+ currencies and 5+ languages, expect to pay more for hosting. The added complexity is worth it for global sales.

8.4 Image optimisation for multilingual stores

Different languages don’t need different images — unless your images contain text.

What to do with text‑heavy images:

  1. Create separate images for each language if they contain text
  2. Use translation plugins that can replace images per language
  3. Avoid text‑heavy images — use text overlays instead

What to do with all images:

  1. Use a CDN (Cloudflare, BunnyCDN)
  2. Compress images (ShortPixel, Imagify)
  3. Use WebP format

💡 If you have multiple language versions of the same image, name them appropriately: red-shirt-en.jpgred-shirt-es.jpgred-shirt-fr.jpg.

❓ Frequently Asked Questions

Q1: Do I need a multilingual plugin if I only sell digital products?

Yes. Even digital products benefit from multilingual checkout, emails, and support pages. Customers are more likely to buy when they understand everything. For digital products (like plugins), there are no shipping barriers — language is the only barrier.

Q2: Can I use both WPML and Polylang?

No. They conflict with each other. Choose one.

Q3: What about TranslatePress, Weglot, or GTranslate?

They’re valid alternatives, but each has limitations:

PluginApproachStrengthWeakness
TranslatePressVisual front‑end editorEasy to useLimited WooCommerce support
WeglotCloud‑based, automatic translationQuick setupMonthly fee, limited control
GTranslateGoogle Translate APIFreeLower translation quality, SEO issues

For a serious WooCommerce store, WPML or Polylang are more feature‑complete.

Q4: How much does professional translation cost?

Costs vary widely:

Translation typeCost per wordExample (500 words)
AI translation (PTC)Included in WPML (capped)$0‑$10
AI translation (DeepL)$0.01‑$0.03$5‑$15
Professional human translation$0.10‑$0.20$50‑$100
Specialised (legal/technical)$0.20‑$0.50$100‑$250

If you have 50 products with 500 words each (25,000 words total):

  • AI translation: ~$50‑$100
  • Professional translation: ~$2,500‑$5,000

💡 For most stores, a combination works best: AI translation for the first pass, then human review for accuracy.

Q5: Can I translate variations and attributes?

Yes. Both WPML and Polylang for WooCommerce support translating product variations and attributes. When you translate a variable product, all variations become translatable, and each variation’s options (size, colour, etc.) are translated separately.

Q6: What happens if I add a new language later?

WPML: Go to Dashboard → Updates and update translations. WPML will prompt you to translate existing content into the new language.

Polylang: You’ll need to manually create translations for existing content. There’s no automatic process.

Q7: Will multilingual plugins slow down my store?

They add some overhead, but both WPML and Polylang are optimised for performance. With proper caching (WP Rocket, W3 Total Cache) and good hosting, most stores see minimal slowdown. Expect a 10‑20% performance hit at most, which is acceptable for the benefits.

Q8: Can I test translations before publishing?

Yes. Both plugins let you preview translations before making them live. WPML’s Translation Dashboard shows translation status and allows you to review before publishing. Polylang also shows translations in draft status before you publish them.

Q9: How do I handle customer support in multiple languages?

Consider these approaches:

  1. Multilingual support plugin — WPML’s Translation Management includes support ticket translation
  2. Separate support channels — Different email addresses per language
  3. Third‑party tools — Intercom, Zendesk, or Freshdesk with language support
  4. AI translation — Use AI to translate support tickets (not perfect but workable)

At minimum, have translated FAQ pages and contact forms in each language.

Q10: What about GDPR and multilingual stores?

Ensure:

  • Your privacy policy is translated into all supported languages
  • Cookie consent notices are translated
  • Data processing information is clear in each language

Most legal plugins (like GDPR Cookie Consent, Complianz, or WPML’s own privacy pages) support multilingual setups.

Q11: How many languages should I start with?

Start with one extra language. Don’t try to translate into 10 languages at once. Pick one market with clear demand. For most English stores, Spanish is a great first choice — it’s spoken by over 500 million people across multiple continents, and conversion rates to Spanish are often higher than for French or German.

Add languages gradually as you see demand. Monitor your analytics to see which countries are visiting your site, then prioritise those languages.

Q12: Can I sell in multiple currencies with Polylang?

Yes, but you’ll need a separate currency plugin. Polylang for WooCommerce doesn’t include multi‑currency. You’ll need a plugin like CURCY, Shills Multi Currency, or Aelia Currency Switcher. Adding a separate plugin means more maintenance and potential compatibility issues.

With WPML, multi‑currency is built in. This is one of the key reasons WPML is better for serious international stores.

What’s Next?

You now have a complete multilingual WooCommerce store – languages, currencies, localised checkout, and SEO. Your store can now sell to almost anyone, anywhere.

👉 Next article in this series: WooCommerce Accounting Integration – Xero & QuickBooks

We’ll cover how to sync your WooCommerce orders with popular accounting software to automate bookkeeping, invoicing, and tax reporting.


Are you planning to go multilingual? Which plugin are you leaning towards – WPML or Polylang? Let me know in the comments.


📌 Key Takeaways (for skimmers)

  • Multilingual stores translate products, pages, emails, and checkout — plus localise currency, payments, shipping, and tax.
  • WPML vs Polylang: WPML includes AI translation, multi‑currency, and Elementor compatibility. Polylang is cheaper but more manual.
  • WPML pricing: €99/year for Multilingual CMS (3 sites, all features, PTC AI included). Polylang Business Pack: €139/year (Pro + WooCommerce, 1 site).
  • AI translation: WPML’s PTC outperforms DeepL on every quality dimension. Polylang Pro uses DeepL (requires human review).
  • Multi‑currency: WPML includes it. Polylang requires a separate currency plugin.
  • SEO: Use subdirectories (/es//fr/), let your plugin handle hreflang tags, translate slugs and meta data. Submit separate sitemaps.
  • Elementor: WPML has dedicated compatibility. Polylang is officially “currently not compatible”.
  • Localisation: Adapt currencies, payment methods, shipping, tax, date formats, and address formats per country.
  • Performance: Expect 10‑30% overhead. Use caching plugins (WP Rocket) and good hosting.
  • My recommendation: WPML for most stores. The AI translation and multi‑currency justify the €99/year cost.

🔗 Internal Links