Get in touch
  • WordPress
  • Sales and conversion
  • v1.0.1

Polylang Multilingual Shop for WooCommerce — a multilingual store on free Polylang

Multilingual WooCommerce on free Polylang: one-click product translation (prices, stock, SKU, images, categories, attributes and variations in one go), shared prices and stock across languages, shop, cart, checkout and account pages per language, the cart follows the shopper’s language, the order keeps its language and customer e-mails go out in it. Classic and block checkout, HPOS. The base version is free; Pro adds translating the whole catalogue in one run, separate prices or stock per language, payment and shipping texts per language and CSV with language columns.

Download Free
Pro · one-year licence The more sites, the less each one costs
Compatibility
WordPress 6.2+ · WooCommerce 8.0+ · Polylang 3.7+ (free; tested on WordPress 7.1, WooCommerce 11.1, Polylang 3.8) · PHP 7.4+ (live run on PHP 7.4 and 8.3) · HPOS · classic and block cart and checkout · language from the directory, subdomain, content, plain permalinks
Licence
one site, annual
Trial
7 days, no card, one per site
Updated
September 2026
Or all 144 Pro modules with All Access — 4 990 ₴ / year

What Free has,
and what Pro adds

The free version works with no time limit. Pro adds the rest of the features in the table.

Feature Free Pro
Products, categories, tags and global attributes become translatable in Polylang ✔ ✔
“+” next to a product — a full copy in that language: prices, stock, SKU, images, categories, attributes, variations ✔ ✔
Shared prices, sales, stock, SKU/GTIN, weight, images, categories — edit in any language ✔ ✔
Variations are linked across languages: add or delete one — the others follow ✔ ✔
One stock for all languages: an order in any language reduces every translation ✔ ✔
Product type (simple, variable, external) stays the same in every language ✔ ✔
Shop, cart, checkout, account and terms pages per language — in one click ✔ ✔
The cart follows the language: lines move to the translation of the product and variation ✔ ✔
Classic and block cart, checkout and mini-cart in the page language, HPOS ✔ ✔
Language subdomains and plain permalinks — the block checkout is translated ✔ ✔
The order keeps its language: Language column and language selector on the order ✔ ✔
Customer e-mails in the order language — also on status changes in the admin ✔ ✔
Admin notifications in the store language, one per product rather than one per translation ✔ ✔
A coupon limited to a product or category covers its translations ✔ ✔
Your own e-mail subjects and attribute names — in Languages → Translations ✔ ✔
Interface in English, Ukrainian, Russian, German, Spanish, Polish and Romanian ✔ ✔
Whole catalogue translated in one run, no duplicates on a rerun — ✔
Separate price, stock, images or SKU per language (choose the data groups) — ✔
Payment and shipping method titles, descriptions and instructions per language — ✔
CSV export and import with “Language” and “Translation group” columns — ✔

What it looks like

Ukrainian WooCommerce shop page with the Polylang language switcher
The shop page in Ukrainian: only the Ukrainian product translations, prices and sales shared with English, the Polylang language switcher on the right. The module creates the shop page of every language in one click.
The cart after a language switch: products moved to their Ukrainian translations
The shopper added the beanie in English, then switched to Ukrainian: the line moved to “Шапка” by itself, the hoodie variation with its translated colour. Prices, sale and shipping stay the same.
WooCommerce block checkout in Ukrainian — desktop and a 390 px phone
The block checkout in Ukrainian on desktop and on a 390 px phone: fields, products, shipping and payment methods (Pro texts) in the page language. The order keeps language uk, the customer e-mail is in Ukrainian.

The trial starts when you ask

A fresh install is the free version, nothing switches on by itself. The “Try Pro for 7 days” button → e-mail → the key right in the window and by e-mail.

One key — one site

Moving the store? Unbind the licence on the old domain and activate it on the new one yourself. If our server is unreachable, Pro keeps working for 14 more days. For studios — keys for 5 or 25 sites, or unlimited.

Technical requirements

  • WordPress 6.2+, WooCommerce 8.0+ and the free Polylang 3.7+. Live run on WordPress 7.1, WooCommerce 11.1 and Polylang 3.8, with and without HPOS.
  • PHP 7.4+. Live run on PHP 7.4 and PHP 8.3.
  • Polylang URL modes: directory, subdomain, content, plain permalinks — all four tested; a separate domain per language runs through the same code as subdomains but was not run on its own.
  • Themes: tested with Twenty Twenty-Five and Storefront, block and classic cart and checkout.
  • Not together with Polylang for WooCommerce or Hyyan WooCommerce Polylang Integration — they do the same job; the module pauses next to them. Polylang Pro and page caching were not tested.

Version history

v1.0.1 Current September 2026

Orders from the block checkout keep the shopper’s language even when the Store API request arrives without the language parameter.

v1.0.0 September 2026

First public release: translatable products, variations, categories, tags and attributes, one-click product translation, shared data, product type and stock in sync across languages,…

Frequently bought with Polylang Multilingual Shop for WooCommerce

4 modules in one order — 40% cheaper than separately

“Store starter” bundle Polylang Multilingual Shop Nova Poshta Premium LiqPay Telegram notifications and Viber/SMS for customers Need more — all 144 modules in All Access for 4 990 ₴.
3 590 ₴ / year instead of 5 960 UAH bought separately
Buy the bundle →

Full module description

Polylang Multilingual Shop for WooCommerce builds a multilingual store on the free Polylang. Polylang translates posts and pages; this module teaches it WooCommerce: products with variations, categories, tags and attributes, the shop, cart and checkout pages, the cart, the order and the e-mails. A shopper who reads the store in Ukrainian buys in Ukrainian and gets a Ukrainian e-mail, while the warehouse sees one product with one stock level.

A product is translated in one click: “+” in the language column creates a full copy — prices, stock, SKU, images, translated categories and attribute values, every variation. You only translate the texts. From then on everything that is not text stays the same in every language: change the price in any language and the others follow, sell the product in the German version and the stock drops everywhere.

What the shopper sees

  • A shop page for every language. The Ukrainian shop page lists Ukrainian products; the language switcher leads from shop to shop, not to the home page.
  • Product, categories, attributes in the shopper’s language. “Колір: Червоний” instead of “Color: Red”, navigation and breadcrumbs in Ukrainian.
  • Same prices. The sale, the price range of variations and the stock are the same as in the English version.

The cart follows the shopper: switch the language and the lines move to the translations of the same product and variation, with the same quantity and coupon. The block cart, mini-cart and checkout get the page language (their Store API requests carry it), and so does the classic checkout — product names, shipping, field errors and the order itself are all in Ukrainian.

The order keeps the language it was placed in. “Order received”, then “Shipped” or “Completed” reach the customer in that language — whether the status is changed by an admin in an English dashboard or by a payment service at night.

What the admin gets

  • Product translation with “+” in the product list or in the language box on the product screen — a full copy, status “Draft” or the same as the original (configurable).
  • Shared data in sync from any language: prices and sale dates, stock and status, SKU and GTIN, weight and dimensions, shipping and tax classes, image and gallery, categories, tags, attributes, linked products. The product screen tells you what exactly is shared.
  • WooCommerce → Polylang Shop: how many products each language has and how many are not translated yet, the shop, cart, checkout and account pages per language and a “Create the missing page translations” button — a copy with the block or shortcode, not an empty page.
  • Languages → Translations: attribute names, your own WooCommerce e-mail subjects, headings and texts, and in Pro the payment and shipping texts.

The orders list has a Language column (HPOS and legacy storage), the order screen an “Order language” field. Admin notifications (“new order”, “low stock”) go out in the store’s default language, one per product rather than one per translation.

Pro: the whole catalogue at once, prices per language, payment texts and CSV

  • Translate the whole catalogue. Pick a language and a status — the module gives products without a language the default one and creates the missing translations of categories, tags, attribute values and products with all their variations. Short steps, can be stopped and resumed, a rerun duplicates nothing.
  • Separate data per language. Untick a group and each language keeps its own price, stock, images or SKU — for example a separate stock per market.
  • Payment and shipping texts per language: payment method titles, descriptions and instructions (bank details on the thank-you page and in e-mails) and shipping method titles — on the classic and the block checkout; plus the store notice and the checkout consent texts.
  • CSV with languages. WooCommerce export and import with “Language” and “Translation group” columns: products and variations come in already in their languages and linked.

How it works — step by step

  1. You add languages in Polylang; the module makes products, categories, tags and attributes translatable and creates the shop, cart, checkout and account pages for every language.
  2. “+” in the language column — a full copy of the product in that language; you translate the texts and publish.
  3. You edit price, stock or variations in any language — the module carries the shared data to every translation; an order reduces the stock in all languages.
  4. The shopper switches language — the cart moves to the translations; block and classic checkout run in the page language.
  5. The order stores its language; every customer e-mail about it goes out in that language, admin e-mails in the store language.

Under the hood

  • Public APIs only. Languages and translations through Polylang functions (pll_*), products and orders through the WooCommerce CRUD — so it works with HPOS and with legacy order storage.
  • Data. Order language in the _catcode_plms_lang meta, the link between variations across languages in _catcode_plms_vgroup, settings in one option catcode_plms_settings. No custom tables.
  • For developers. The catcode_plms_email_language filter sets the language of any WooCommerce e-mail.
  • Removal. Products, translations and pages always stay; settings, variation links and the order language go only with “Delete data on uninstall” ticked.

How to install

  1. Install and activate WooCommerce and the free Polylang, add your languages in Languages → Languages (“language from the directory name” is recommended).
  2. Download the free version catcode-polylang-multilingual-shop-for-woocommerce-1.0.1.zip with the button at the top of this page (or the Pro zip from your account after purchase) and install it: Plugins → Add New → Upload Plugin.
  3. WooCommerce → Polylang Shop → “Create the missing page translations” — the shop, cart, checkout and account pages get copies in every language.
  4. In Products click “+” in a language column and translate the texts. In Pro — “Translate the whole catalogue”.
  5. Translate attribute names and e-mail texts in Languages → Translations.

Questions
about the module

Didn't find the answer? Message us on Telegram and we'll reply within a business day.

@catcode_support Setup, compatibility, activation
Do I need Polylang Pro or Polylang for WooCommerce?

No. The module works with the free Polylang from wordpress.org. If Polylang for WooCommerce is already active, our module pauses itself and says so — both do the same job.

What is shared between languages and what is separate?

Shared is everything that is not text: prices and sale dates, stock, SKU and GTIN, weight and dimensions, shipping and tax class, images, categories, tags, attributes, default variation, linked products. Separate are the name, descriptions, purchase note and custom attribute values. In Pro you can untick a group, and each language keeps, say, its own price.

How do I translate a product?

In the product list click “+” in the language column. A full copy is created: prices, stock, images, translated categories and attribute values (missing ones are created as copies), every variation. You translate the texts and publish.

I have 2,000 products. One by one?

In Pro — “Translate the whole catalogue”: one run creates the missing translations of categories, tags, attribute values and products. It works in short steps, so hosting limits are not hit; 1,350 products took about a minute and a half, up to 3 s and 15 MB of memory per step. A rerun duplicates nothing.

A shopper put a product in the cart in English and switched the language. What happens?

The line moves to the Ukrainian translation of the same product and variation — same quantity, same coupon. If there is no published translation yet, the product stays as it was.

Which language do e-mails go out in?

To the customer — the order language, even when the status is changed by an admin in an English dashboard, by a cron or by a payment callback. To the admin — the store’s default language. The order language can be changed by hand on the order screen.

Which Polylang URL modes are supported?

Language from the directory (/uk/), from the subdomain (uk.example.com), from the content and plain permalinks (?lang=uk) — all four went through the full shopper run. On language subdomains the module also fixes the block cart and checkout translation: without it WooCommerce shows them in English there.

A second currency?

Tested with our Multi Currency: the Ukrainian store in hryvnias, switching the language keeps the currency, the order is placed in UAH with language uk.

I have the free copy from wordpress.org and bought Pro.

Upload the Pro zip in Plugins → Add New and activate it. There is no fatal error: Pro runs on the same settings and data, the free copy switches itself off and tells you it can be removed.

What happens to my data if I delete the module?

Products, translations and pages always stay — they are Polylang content. Settings, variation links and the order language are removed only if “Delete data on uninstall” is ticked.

Not quite what you are looking for?

We build custom modules for WordPress, WooCommerce, OpenCart and Shopify. Tell us about the task and we'll prepare an estimate.

Order a custom module