Multilingual sites: WPML, Polylang and TranslatePress
A shop that sells in more than one language has two sets of everything: two sets of products, two sets of categories and brands, two sets of URLs. Super Speedy Filters is language-aware on all three of the major multilingual plugins, so each language’s archive lists its own terms, with its own counts, linking to its own URLs.
Available since 6.44.
What each multilingual plugin does for you
The three plugins work in genuinely different ways, and that changes what you get.
| WPML | Polylang | TranslatePress | |
|---|---|---|---|
| How translation works | separate posts and terms per language | separate posts and terms per language | one set of content, translated at output |
| Facets show only the current language’s terms | yes | yes | not applicable, there is one set of terms |
| Super Speedy Filters’ own wording is translatable | WPML String Translation | Languages then Translations | its own translation editor |
Translated URL slugs, e.g. /categorie-produit/ | included | Polylang Pro | SEO Pack add-on |
hreflang on filtered pages | from Super Speedy Filters | from Super Speedy Filters | from TranslatePress |
| Titles and meta descriptions on filtered pages | included | included | SEO Pack add-on |
WooCommerce support needs the companion plugin in each case: WooCommerce Multilingual for WPML, Polylang for WooCommerce for Polylang.
Polylang’s free edition translates the WooCommerce catalogue perfectly well. Tick product under Languages then Settings then Custom post types and Taxonomies, along with product_cat, product_tag, product_brand and your attribute taxonomies, and the whole catalogue becomes translatable. Polylang Pro adds translated URL slugs, not the ability to translate products.
Translating the plugin’s own wording
Two kinds of text belong to Super Speedy Filters rather than to your catalogue: the SEO wording that builds filtered page titles and meta descriptions, and the labels on each filter widget. Both are registered for translation under a single group named Super Speedy Filters.
- WPML — go to WPML then String Translation and filter by the Super Speedy Filters domain.
- Polylang — go to Languages then Translations and look for the Super Speedy Filters group.
The SEO strings cover the title prefix and suffix, the connector words that join filters together in a title, the meta description wording, the browser title suffix, the paginated title text and the on-sale prefix.
The widget strings cover every text field on every filter: the group heading, the search box placeholder, the dropdown text, the required-filters tooltip, the clear-filters and clear-search labels, and the stock, on-sale and post-meta toggle labels. They appear under names of the form widget:<widget id>:<number>:<field>, for example widget:ssf_tax_widget:3:searchboxtext.
Place one filter widget and translate its labels, rather than placing a separate widget per language. One widget means one set of settings to keep in step, and the labels follow the visitor’s language automatically.
Strings are registered as the plugin reads them, so load the settings screen or a page carrying the widget once and they appear in the translation list.
Editing a setting sends its translations back for approval
WPML tracks translations against the exact source text. Change the wording of a setting — the title separator, say, or a widget’s group heading — and the source string changes with it, so WPML marks each translation of it needs update and serves the source text on translated pages until a translator approves the change.
This is WPML working as designed, but it surprises people, because the visible symptom is the default language reappearing on translated pages right after an edit that had nothing to do with translation.
Editing SEO wording and then wondering why French pages have gone English. Open String Translation, filter by the Super Speedy Filters domain, and approve the strings marked needs update.
Choosing whether to translate brands and attributes
Each taxonomy is translated or not, and the choice is yours per taxonomy. It has a visible effect on your filters:
- Translated — French has its own Ikea term with its own French slug, and the Brands filter on a French archive lists only the French terms. Brand names that read the same in every language still need a translation to exist, or the brand is missing from that language’s filter entirely.
- Not translated — one Ikea term serves every language. The Brands filter lists the same terms everywhere, in the language they were entered in, and the filter never goes empty.
Brands are the usual case for leaving a taxonomy untranslated, because a brand name is a proper noun that rarely changes between languages. Categories are the usual case for translating, because Chairs really should read Chaises.
Super Speedy Filters follows the setting either way. It restricts a filter to the current language only for taxonomies your multilingual plugin is translating; an untranslated taxonomy is left alone, because filtering shared terms by language would leave the filter with nothing to show.
Colours and thumbnails
Swatch colours and term thumbnails are read from the term you set them on, falling back to the default language’s term when a translated term has none. Set a palette once in your default language and every language uses it. Set a colour or thumbnail on a translated term and that one wins for its language.
Filtered URLs and search engines
Filtered pages you allow to be indexed carry hreflang tags listing the equivalent filtered URL in each language, along with a self-reference and x-default — the French filtered page points at the English one, and the other way round.
A language is listed only when every term in the filter has a translation in it. A page filtered by a term that exists in one language alone lists only that language, which is correct: there is no equivalent page to point at.
Polylang Pro’s translated slugs are understood, so a French page at /fr/categorie-produit/chaises/ builds its title, breadcrumbs and filter links from the French terms, and its filter links stay inside the French URL space.
TranslatePress writes its own correct hreflang tags on filtered pages, so Super Speedy Filters leaves them alone.
TranslatePress and page titles
TranslatePress translates a page’s visible content. Titles and meta descriptions live in the document head rather than the body, and translating them is the job of TranslatePress SEO Pack. Without SEO Pack, a filtered page on a translated URL keeps its source-language title and meta description while its content translates normally.
Everything else works without SEO Pack: filters parse the language prefix in the URL, the right products are listed, and per-URL SEO overrides match translated URLs.
Troubleshooting
A brand facet leads to a 404 on WPML
With WooCommerce Multilingual, product_brand‘s URL base is translated in the links WordPress generates without a matching rewrite rule being registered for it, so a URL such as /marque/ikea-fr/ returns a 404 while /brand/ikea-fr/ resolves.
This is not something the filters do. To confirm it on your own site, deactivate Super Speedy Filters and open a brand archive from the WooCommerce brand list: the same URL is generated and the same 404 comes back. Categories are unaffected. Raise it with WPML support.
Translated pages show the default language’s wording
Almost always a WPML string awaiting approval — see Editing a setting sends its translations back for approval above.
A filter is empty in one language
The terms in that language have no products assigned, or the taxonomy is translated and the terms have not been translated yet. A filter lists a term only when that language’s term has products, which is what stops a facet leading to an empty page.

Comments