WooCommerce Multilingual includes support for running a multilingual e-commerce site with multiple currencies, independent of the site’s languages. You can set pricing using a configurable exchange rates map or per product. On the front-end, users are able to switch between the different available currencies, like they switch languages.
It is possible to show specific currencies on specific languages and also configure default currencies for distinct languages. This is done on the WooCommerce → WooCommerce Multilingual page, under the Multi-currency tab.
This helps with situations when products in certain languages need to be ordered only in a precise currency. Additionally, default currencies can be set for specific languages so, by default, the users see product prices in a given currency when they switch to a different language on the front end. The Keep option means that the currency does not change when the language is being changed.
When a new currency is added it is being included by default on all languages and can easily be turned off using the appropriate checkboxes.
Each custom currency must have an associated exchange rate. This will be relative to the site’s default currency and can be changed anytime. When the exchange rate changes all prices in the custom currencies will change accordingly, except prices included in orders that have already been placed.
By clicking on Edit currencies settings icon, under the Multi-currency tab, you can access the set of options related to currency display, exchange rate, and Payment Gateways options.
Currently, supported payment gateways are Paypal, Stripe, and BACS.
Since not all payment gateways accept all currencies you can define ways to automatically make a conversion before making the transaction in a supported currency.
On the checkout page, a notice shows which currency will be used in the transaction if it is different than the one already selected by the user. The total amount is also displayed in the converted currency.
WooCommerce Multilingual allows you to set up automatic exchange rates for your store. There are three options to set for this features.
You can set an additional Lifting charge percentage to adjust the final, effective exchange rate. This is useful for international transactions that may add additional charges.
The following is how the effective rate is calculated, based on the set lifting charge:
Effective Rate = Service Rate x (1 + Lifting Charge / 100)
Finally, you can also set how frequently the automatic exchange rates are updated for your store. Updates can be set to happen on a daily, weekly, or monthly basis. By default, this is set to manual update.
WooCommerce Multilingual also includes the option to set custom prices in different currencies. These are fixed and will override the prices automatically determined by the exchange rate.
Setting custom prices in different currencies can be enabled from the post editor, under the fields for Regular Price and Sale Price (for the default currency).
These prices will override the prices determined automatically based on the exchange rate. To revert to using the automatic prices you need to remove the custom prices and update the product.
A similar interface exists on the variable products editing screen. You have the possibility of adding custom prices for variations or currencies.
You can also configure distinct shipping rates per currency for the following standard WooCommerce shipping methods:
- Flat rate – Set the main flat rate and rate for shipping class (if any are defined)
- Free shipping – Set the minimum amount
- Local pickup – Set the handling fee
In this example, we will customize rates for flat rate shipping. To do this, go to WooCommerce → Settings and click the Shipping tab. Click Edit under the shipping method you would like to customize, and a pop-up dialog will appear.
In the pop-up, use the Cost field to define the shipping cost in your default currency. From the Enable costs in custom currencies dropdown, select Calculate shipping costs in other currencies manually. Enter the custom prices for the rest of your currencies in the fields that appear.
Orders have a specific currency associated with them. It is the currency that the user was using when placing the order. This is also reflected on the back-end, where on the Orders page, each order shows the total in the corresponding currency. On this page, it is also possible to filter the orders by currency.
Since all created orders have a currency associated, the WooCommerce reports are broken down by currency.
Once you have added the support for multiple currencies, you should display a currency switcher in your site’s theme. You can display the currency switcher with a shortcode or as a hook.
format (Available tags:
do_action('wcml_currency_switcher', array('format' => '%name% (%symbol%)'));
The other available parameter besides “format”:
- switcher_style: wcml-dropdown, wcml-dropdown-click, wcml-horizontal-list, wcml-vertical-list
Outputs a basic drop-down menu with currency codes for option values. The client’s current currency or the configured default currency for a specific language will be auto-selected.
Besides these default switcher_style options, you can also use your custom ones, defined by the custom currency switcher you design using template files. In this case, you need to use the correct slug that identifies your custom currency switcher.
The slug for your custom switcher is generated depending on the sanitized name of your template, as defined in its config.json file, and the template’s location:
|Location of the custom currency switcher||How the slug is generated|
|Theme folder||Theme slug + sanitized switcher name|
|Plugin folder||Plugin slug + sanitized switcher name|
|“uploads” folder||“uploads-” + sanitized switcher name|
Let’s consider the following example:
- The name of your custom currency switcher is “My custom switcher”.
- You are using the Twenty Seventeen theme and the template files for your switchers are located in the theme’s folder.
The slug to use with your custom switcher is twenty-seventeen-my-custom-switcher, as shown in the following example.
do_action('wcml_currency_switcher', array( 'format' => '%name% (%symbol%)', 'switcher_style' => 'twenty-seventeen-my-custom-switcher' ));
The PHP code version is best when you manually add the currency switcher to PHP templates.
The currency switcher can also be added to a template as a standard WordPress widget.
Options for the currency switcher can be configured on the Multi-currency tab of WooCommerce Multilingual main settings page.
Currency switcher options allow you to:
- Preview how the switcher will look on the front-end before applying changes.
- Set the switcher style.
- Arrange the order of currencies in the switcher using drag-and-drop.
- Adjust the output of the switcher.
- Enable or disable the showing of a currency selector on the product page template.
You can customize the template used for the currency switcher by using the four parameters:
- %name% – full name of the currency, for example “Euro”
- %symbol% – the standard symbol that represents the currency, for example “$” or “€”.
- %code% – the standard code that represents the currency, for example “USD”, for United States Dollar.
- %subtotal% – total costs of the current order (basket), without shipping costs and additional taxes. Subtotal is the formatted price and includes the currency symbol positioned according to the currency options set in WooCommerce settings.
Starting with version 3.9, WooCommerce Multilingual allows you to use the following HTML tags to customize the output of the switcher: img, span, em, strong and u. Please note that these tags can only be used when the currency switcher style is set to List of currencies. This stems from the official HTML standards for the select tag.
Besides the exchange rate, it is possible to configure, for each separate currency, things like the currency position, separator for thousands, decimal separator and number of decimals – similar to how these can be defined for the default WooCommerce Currency in the standard WooCommerce screen.
When you set pricing per currency, you can have WooCommerce Multilingual to auto-convert the prices, while keeping them “elegant”. This is possible with the use of rounding rules that can be configured next to the general currency options.
The prices that are determined automatically can be rounded to the nearest integer.
Increment for nearest integer:
- 1454.07 becomes 1454 when this value is 1
- 1454.07 becomes 1450 when this value is 10
- 1454.07 becomes 1500 when this value is 100
Autosubtract amount: the value to be subtracted from the amount obtained previously.
For 1454.07, when the increment for the nearest integer is 100 and the auto-subtract amount is 1, the resulting amount is 1499.
WooCommerce Multilingual defines a set of filters and hooks that can be used by 3rd party plugins to implement multi-currency logic when WooCommerce and WooCommmerce Multilingual are set up and running. With this, the users are able to see prices in their preferred currency (the price amounts are being determined based on the currencies exchange rates map). The orders are placed in the currency that the user selects on the front-end.