Oh how easy making woocommerce fully multilingual, fully multicurrency and sharing a same order & user base would be…
Key decisions must be made before transforming your store from a single en-us to a massive global subdomained or subdirectoried or ccTLD’ed enterprise.
WooCommerce powers 30% of online stores and I’m surprised at the lack of guides available in this area.
Before you start attempting to make your site multilingual and multi-currency:
Buy a separate domain (or use a free .tk if you running on a budget) so you can mess around with the site because the process can become a very big mess, very fast.
Make a copy of your site on a new hosting account with the new domain, replace all old website strings with new site website strings in the new database in phpmyadmin. Put a maintenance plugin on the development copy, and/or block search spiders so that your development site doesn’t get indexed. The old spider blocking plugin I used to use has been deleted from the WordPress plugin directory, but you can use this copy. Add these additional robots so that your development site doesn’t get indexed:
For a super simple multi-currency, Cloudflare friendly, wp-rocket and nginx cache proof woocommerce store use the following plugins:
Aelia Foundation Classes for WooCommerce
Aelia Currency Switcher for WooCommerce
WooCommerce Cache Handler by Aelia
Otherwise, for the more complex solution involving subdomains or directories, keep reading.
Subdomains or Subdirectories or separate tld’s.
Subdomain Real World Pros:
Store appears more international (usa.store.com, ru.store.com, es.store.com, canada.store.com, etc.).
In fact, the separate CC-tld’s can also look similarly as big (store.us, store.ru, store.es, store.ca, etc.).
Subdomain Real World Cons:
Not immediately obvious that you’re in the correct store (e.g. iPhone browser bar only showing domain)
Is there a SEO deficit from using subdomains? Debatable: ahref lang seems to be treated in a way that is similar to canonical redirects, especially in terms of SEO losses. It’s in Google’s interest to show users the most relevant page, so instead of the usa.store.com URL, canadian googlers will see it replaced in their search results with the canada.store.com URL, if you’ve set it up correctly.
Problems automatically solved by WPML:
Same database – all-in-one-place order management, user database, admin area, plugins across all stores.
Same server (pro or con, but if you’re using Cloudflare, Google knows every visitor will see a “fast copy” of your site, negating SEO losses from potential server location arguments)
Cross-subdomain cookie management is automatically solved by WPML:
Problems not solved by WPML:
WPML has multicurrency capability but we found Aelia Currency Switcher for WooCommerce to be outstanding with and without WPML.
If you’re not using a subdomained or subdirectoried or ccTLD’ed store, but still want to have priced displayed based on geolocation, stick to using Aelia Currency Switcher for WooCommerce.
Last question before turning on WPML: is your theme WPML compatible?
Hopefully yes, otherwise you might have issues later, especially if the theme designer has left erroneous tags in the header.
In our case, the theme was actually abandoned on themeforest, so my last suggestion on theme choice is pick a theme that has been around for a while. We’re picking up the sticks now in terms of plugins going forward but the original theme remaining “old”.
Now You’ll need:
WPML Multilingual CMS
WPML String Translation
WPML Translation Management
Install each, starting with WPML Multilingual CMS which is the base plugin.
Follow the prompts.
Add these A Records (or equivalent) to your DNS for WPML to work:
We added fr, ru and us for French, Russian and American stores respectively.
Add these domain alliases (or equivalent) to your new “sites” in order for WPML to work:
Add these subdomain setups (or equivalent) to your Language URL format in WPM:
We turned off “validate on save” and visited the URL and they seems to work even though we were receiving a not valid error. That error is now gone, most likely a DNS cache issue.
When you visit ru.mystore.com you should get a 404 or untitled but the URL should be valid in the URL bar.
Now install WooCommerce Multilingual which is available on the wordpress.org plugin base and follow the prompts.
It will install missing shop pages in the correct languages and translated URLs (cart, checkout, my account, etc.)
This plugin gladly went ahead and installed full translated shop, account, checkout & cart pages:
French: Boutique, Mon compte, Panier, Blog
Russian: Корзина, Магазин, Блог, Отследить Ваш Заказ
Bonus: Yoast will automatically create a sitemap for each new subdomain.
Head to pages, posts, products and duplicate each in the respective language. Fill in your translations etc, etc.
This solution worked more than perfectly for us, especially since WPML, Yoast, WP-Rocket, WooCommerce and all our favourite plugins all work together just perfectly.