Originally written
March 10, 2014
November 23, 2015

This document is obsolete – no special action needed when your WooCommerce site has a default language that isn’t English

Since WPML 3.3, you can run multilingual WooCommerce sites that have any default language, not just English. Strings have their ‘source language’ and it can be any language.

When a site’s default language is not English, some special considerations are required for multilingual WooCommerce sites. The reason for this is that some texts are translated as “strings,” using the same mechanism as Gettext, and other texts are translated as posts and taxonomy.

“Strings” should always be translated from English to other languages, even if English is not used at all in the site. Posts (products) and taxonomy (product categories) are translated from the site’s default language to other languages. For a technical explanation of why this is the case, please refer to the FAQ about String Translation when the default language is not English.

Site elementUse this language to write the original textTranslate to these languagesTranslate at
ProductsSite’s default languageOther site languagesWooCommerce Multilingual->Products
Global attributesEnglishOther site languagesWooCommerce Multilingual->Attribute tabs
Product categories, tags, and global attribute termsSite’s default languageOther site languagesWooCommerce Multilingual->Attribute tabs
Product category baseEnglishAll site languages, except EnglishWPML->String translation
Custom baseEnglishAll site languages, except EnglishWPML->String translation
Individual product attributes (not global)Site’s default languageOther site languagesWooCommerce Multilingual->Products tab->Individual Product

First, verify that original strings are in English and translate them to the site’s other language.

Go to WPML->String Translation and verify that the original strings are indeed in English. This will allow you to translate them correctly to other languages. Remember, even if the site doesn’t include English, the original strings should still be in English.

The screenshot below shows two strings. The widget title is incorrectly entered in Spanish and the URL slug is correctly entered in English. This means that the URL slug will be translatable to all the site’s languages, while the widget title will not appear correctly in English.

If you see a string that needs to be translated from a language other than English (like the widget title below), check where that value is entered and update it. You cannot update original strings from the “String Translation” page. You must find where the original string is defined, update it there, and return to the “String Translation” page to translate it. In the case of the widget title, you need to go to Appearance->Widgets and enter the title in English.


Verify that all translations are marked as “complete.”


After you translate strings, remember to select “Translation is complete.” Without this, your translation will not be used. Leaving translations incomplete allows you to save draft translations, without having them displayed on the site.

Make sure that hardcoded strings in the PHP code are entered in English.

If a string appears in a language other than English, and it is not coming from the WordPress admin, check if the theme or plugin is registering it. You can determine this using the context of the string.

How to configure the product base and translate it:

You should always enter URL parts (permalinks) in English. Then, translate them in WPML>String Translation.

Permalinks input
Permalinks input
Permalinks translation
Permalinks base
Permalinks translation
Permalinks translation

When you leave the permalink option empty, the default WooCommerce values and translations will be used.

To check if everything is working fine, visit the product and category pages on the site’s front-end, and verify that the URLs are fully translated.

For example:
OK -> http://example.com/it/categoria-prodotto/cat-it/ (the Italian URL includes the Italian category name)
Not OK -> http://example.com/it/product-category/cat-it/ (the Italian URL includes the English category name)

How to translate products and categories:

The fact that your site’s default language is not English is not relevant for translation of products and categories. Simply enter the original values in the site’s default language (it doesn’t need to be English), and use the WooCommerce Multilingual translation table to translate to the site’s other languages.

Check that all product-attributes are registered in English.

Product attributes pass via WPML’s string translation, so their original texts must be in English. When you create custom product attributes, make sure to enter their values in English (even if your site isn’t using English at all). Then, translate them to the site’s languages in WPML->String Translation.

Global attributes
Global attributes

Check that all product-attribute terms are registered in the site default language.

All terms should be registered in the site’s default language, as they will be translated afterwards in the WooCommerce Multilingual GUI.

Adding global attributes in WooCommerce admin
Adding global attributes in WooCommerce admin
Translating global attributes in WooCommerce Multilingual
Translating global attributes in WooCommerce Multilingual

Finally, make sure that products and categories are translated.

In addition to the strings and product attributes, which require special attention, your site’s products and categories must also be translated and published.

Unlike strings and attributes, which you need to enter in English and translate to other languages, the products and categories need to be entered in the site’s default language and translated “normally.”