WordPress is the perfect platform for creating multilingual websites that are more accessible to international users — all you have to do is activate a suitable translation WordPress plugin and select the content you want translated.
There are dozens of free and premium translation solutions available to WordPress users. However, since its launch in 2007, the WordPress Multilingual Plugin (WPML) is the solution most WordPress experts recommend.
So, why is everyone recommending WPML? Is it really as good as they say it is?
The answer to that is yes… and no.
WPML is a powerful translation solution that allows you to translate WordPress posts, pages, custom post types, taxonomies, menus, themes, plugins and more. For most websites, WPML will prove to be the cheapest translation solution, and also the most flexible, but, when compared with its competitors, WPML takes less of an automated approach to translation. Therefore, you need to be prepared to be more ‘hands-on’ and manually translate key areas of your website.
Let’s delve deeper and see how WPML works, and talk about the pros and cons of using this popular plugin.
Why Choose WPML?
There are many great WordPress translation plugins on the market, but there are many valid reasons to choose WPML.
The first reason is compatibility. WPML is a stable solution that’s been proven to work with thousands of different WordPress products. Jamie from WC Vendors recently spoke to me about this, noting that the developers of WPML have close to 3,000 WordPress plugins in their test area to ensure it integrates with all WordPress plugins.
This is why so many WordPress themes and plugins proudly declare they’re ‘Compatible with WPML’.
Another great selling point of WPML is its support for search engines. The plugin saves all translations in your WordPress database and gives you full control over translated URLS (permalinks), meta information and sitemaps.
Storing translated versions of each page of your website will obviously increase the size of your WordPress database. However, website performance shouldn’t be affected if you optimise WordPress correctly — and, from a website uptime point of view, storing all data on your own server also means there’s no risk of you losing translated pages if a third-party service goes down.
Translation solutions, such as Weglot and GTranslate, can automatically translate all content on your website. WPML lets you assign translation work to others and offer automatic translation as an additional service too (more on this later), however the core version of WPML has been designed so website owners manage translations themselves.
Once you’ve selected the languages you want to add on your website, WPML will display options to translate every aspect of your website including blog posts, pages, custom post types, categories, widgets, menus, theme files and more.
This setup will work well for many websites because it allows you to control costs. For example, let’s say you want to translate your company website. You could arrange a native Spanish speaker to translate key areas, such as your home page, and pay WPML to automatically translate other key pages. For blog posts, you could manually translate content using free translation services, such as SpanishDict or Google Translate.
As you shall see, there’s a lot to love about WPML.
Setting Up WPML
Once you’ve purchased a license for WPML, you can log in to your WPML account, visit the downloads page and download the core version.
If you purchased a CMS or Agency license, three additional plugins are available that enhance multilingual websites.
- String Translation — lets you translate interface strings directly from within WordPress without having to use .mo files.
- Translation Management — lets admin manage translation work and allows you to change normal users into translators.
- Media Translation — lets you define which images display for each language.
Documentation is available for each plugin to help you to understand how they work.
The downloads page also displays compatibility plugins for popular WordPress plugins such as Yoast SEO, Advanced Custom Fields, Contact Form 7 and Toolset. These compatibility plugins act as a bridge to ensure WPML works effectively with other solutions.
Three additional WordPress plugins are recommended for advanced multilingual websites. Toolset Types is available to all users, but Sticky Links and CMS Navigation are only available to CMS and Agency license users.
- Toolset Types — a free version of Toolset that lets you set up custom post types, custom fields and taxonomy for multilingual sites.
- Sticky Links — prevents internal links from breaking when you change permalink structure, hierarchy and page slugs.
- CMS Navigation — adds additional navigation elements such as breadcrumbs trail, dropdown menus and sidebar navigation.
Sticky Links and CMS Navigation are useful add-ons, but they don’t greatly enhance WPML.
WPML welcomes you with a user-friendly setup guide once you’ve activated the plugin. In the first step, you need to select the current language your website is written in.
In the next step, you can define the order of the languages you’ve chosen.
By default, the language switcher won’t display any languages there are no translations for.
I initially made the assumption that my language switcher wasn’t working correctly, but German and Spanish weren’t always being displayed as I’d not created translations for my home page and left ‘Skip Language’ selected.
This page also displays additional steps for the menu language, widgets, footer and post menu translations.
For each type of switcher, you can select the particular menu or widget you want to display and define its position, style, flags and colors.
In the fourth step, you can enable compatibility reporting, which helps the developers to troubleshoot any problems by sending them a list of the themes and plugins you have active on your website.
You’ll then be prompted to enter your WPML license key.
License keys can be created from your WPML account by simply entering the URL of your website. Interestingly, WPML gives you an option to transfer a license to clients, and for every website you register they give you one website license free.
If you forget to enter your license key, WPML will remind you on the WordPress plugins page that you’re not receiving security updates.
In the last step, you’ll be encouraged to activate Toolset Types. CMS and Agency license holders will also get recommendations for String Translation, Translation Management and Media Translation.
The setup process of WPML is straightforward, but don’t worry if you enter any settings incorrectly as you can change them directly in the main settings area at any time.
Translating Content in WPML
Translating content in WPML is simple. On WordPress post and page lists, you’ll see a new column for languages. From here, you can see which content has been translated and click the + symbol to add a new translation.
When you’re editing a WordPress post type, such as a blog post or page, you’ll see a ‘Multi-Language Content Setup’ box under the content area. This allows you to set that particular post type as not translatable, translatable or translated.
At the right-hand side of the page, a Language box shows you the current language of this page and lets you duplicate the content, images and featured image to another language.
If you click to add a new translation, the WordPress block editor loads up a blank template that’s automatically associated to the original post, page or post type you were previously editing.
You can define the language of the translation, copy content from the original article and overwrite content from the original article. Media can be duplicated too.
I love how much control WPML gives you for translations; you can do everything you can with regular posts and pages, whether it be changing images, changing the page template, defining the page URL slug or whatever. You aren’t restricted to just amending text.
You can filter content by using the language switcher at the top of the page or just below the list of published pages.
This is useful when you want to see all content for a particular language.
Each WordPress widget can be restricted to a particular language too.
This is a powerful feature because it allows you to define exactly what’s displayed to international users. For example, for each language, you could display a different navigation menu to enhance the user’s experience and show more relevant banner advertisements to increase affiliate conversions.
Translations can be added for each WordPress menu — all you have to do is click to add a translation for a specific language, name your menu and then add translated menu items. You can also add translations for tags and each blog post category.
Please be aware that you can only add menu items that are relevant to that language. For example, if you want to create a menu for German visitors, you can only link to content that has been translated to German.
In my test WordPress website, I’d called one of my menus ‘Navigation’, which I later found out was the same word in German. Because of this, I had to rename the German translation of the menu to ‘Navigation De’ as WordPress requires each menu to have a unique name.
This is a minor issue, which I suspect only arises in rare occasions, but be aware that each menu has to have an original name that doesn’t conflict with other menus.
All of these translations and modifications greatly enhance the user experience for people who speak other languages. The integration is so good that if any international visitors miss the language switcher menu, they may assume it’s a local website.
Let’s take a close look at the configuration settings of WPML.
Configuring the Core Version of WPML
WPML works perfectly with default settings — however, I recommend all WPML users familiarize themselves with the options available in the settings area.
The main menu of WPML gives you access to six pages: Languages, Themes and Plugins Localization, WP Menus Sync, Taxonomy Translation, Settings, and Support.
The languages page features all of the settings you previously defined during setup.
Several other useful settings can be found on this page.
You can adjust the language URL format, insert custom language switchers, hide specific languages from visitors and search engines, and make your WordPress themes multilingual. You can also display alternative languages in your website headers and reset all WPML settings from here.
One of the most notable settings on this page is browser language redirection, which is disabled by default. You can use this feature to direct visitors based on their browser language if translations exist for them. Alternatively, you can enable redirection for all visitors and redirect them to the home page if no translations exist.
If you select any browser redirection option, WPML will warn you that browser redirects can affect Google indexing and search results, as you’re redirecting Google too.
The themes & plugins localization page allows you to automatically load your WordPress theme’s .mo file using load_textdomain. CMS and Agency plan holders can activate the String Translation plugin add-on and greatly expand the options available on this page.
The WP Menus Sync page lets you sync the menu structure of your native language to your secondary languages.
The table displays a ‘Not translated’ message for any pages linked in your menus that haven’t been translated.
You can then click the sync button to ensure your menu items are all correctly synced.
The Taxonomy Translation page lets you translate categories, tags and any custom taxonomies you may have. There’s an option to synchronise taxonomy hierarchy based on a specific language too.
The URL slug of each taxonomy can also be changed.
The main settings page has many options for syncing content and meta information from posts and pages. There’s also an option for translating your WordPress login and registration pages.
This settings page lets you define how post types and taxonomies are translated too. You can choose to only show translatable items, fall back to the default language if no translations exist or define a type as not translatable.
A number of options are available for media too. This includes translating existing media, duplicating existing media for translated content and making media available to all languages.
The WPML support page gives you a status overview of the core plugin and available plugin add-ons.
System information, debug information and the remote XML config log, are also available here.
It’s easy to miss it, but WPML also has a useful troubleshooting page that’s linked in the support page.
The top of the page shows you a detailed list of your settings — there’s no option to export these settings to a file, but you can do this manually yourself by copying the code.
Underneath is an option to delete the cache of language switcher templates, clean up your WPML installation and define translatable custom posts linking. A host of options are available here to help you to sync, clear and fix data. Just remember to back up your website before you perform any of these tasks.
At the bottom of the settings page is an option to delete WPML tables and deactivate the WPML plugin. This is a welcome feature, but is obviously something you should use with caution.
Resetting won’t remove any translated content you’ve created, but it will delete important associations between content types.
The configuration area gives you complete control over how WPML works on your website. Be sure to check all settings to ensure it’s working the way you want it to.
Enhancing WPML with Plugin Addons
The Toolset Types WordPress plugin is provided to all WPML users. It can be used to create custom post types, custom fields and taxonomies. Its relationships feature allows you to set up a connection between different post types too.
Up until now, I’ve shown you the core version of WPML that’s available to everyone who purchases WPML. As you can see from the comparison table on the WPML pricing page, a number of additional features are available to those who upgrade to the CMS or Agency license.
These features will only be added when you activate their corresponding plugins and, as you can see below, this greatly expands the WPML admin menu.
The String Translation plugin lets you modify strings from WordPress themes and plugins directly from the admin area. On the Theme and plugins localization settings page, you can scan core WordPress files, themes and plugins to detect any new .mo files.
The status of all strings can be viewed on the String Translation page, and you can filter strings by their status and domain. For example, you can only list strings that are partially translated for a particular WordPress theme or plugin.
Strings can be color coded, and there are options for exporting and importing them too.
Translation Management greatly helps website owners manage translations on their website by allowing content to be assigned to translators or to third-party translation services.
For this functionality to work correctly, the String Translation add-on needs to be activated too, as it uses the WordPress block editor.
You first need to select a user to be a translation manager, and WPML will give that user permission to add other users as translators. Even if you are an administrator, if you’d like to add translators yourself, you need to assign yourself as a translation manager.
There’s no limit to how many translation managers and translators you can add.
Assigning translations is simple: All you have to do is select the content you want to translate and the languages you want to translate it into, and those items will be added to your basket, and then to your translation queue for assignment.
The Media Translation add-on allows you to translate the file name of every image on your website. A different image can be used for each language if you wish, which is particularly useful when the original image contains text.
The last two plugin add-ons may be useful to you when you’re translating your website, but I don’t consider them to be essential.
Sticky Links will prevent internal links from breaking and can scan blog posts for broken links, while CMS Navigation adds additional navigational elements to your website.
Apart from Toolset Types, all of the features I’ve referenced in this section are available through the CMS and Agency plans of WPML. If you have a small website and are translating everything yourself, you may want to stick with the basic license of WPML.
Upgrading will allow you to translate media, themes and plugins. It also allows you to add custom fields, integrate WPML with page builders and add support for WooCommerce, but one of the major reasons to upgrade is to gain the ability to assign translation work to others.
Does WPML Affect Performance?
Performance is an important factor to consider when you’re choosing a translation service.
In my recent review of Weglot, I was pleasantly surprised by its performance. Weglot doesn’t store any data in your WordPress database, but, because it dynamically translates content on the server side and can use WordPress caching plugins, its performance was excellent.
In contrast, WordPress translation plugin GTranslate allows visitors to translate content on the fly using Google Translate. If you upgrade to one of GTranslate’s premium plans, your whole website is translated and a cached copy of each page is stored on the GTranslate server, which inevitably leads to slower page loading times.
So, how does WPML compare?
As long as you optimise your WordPress website correctly, WPML should perform as well as Weglot and shouldn’t increase page loading times at all. There are situations where WPML can potentially cause performance headaches for large websites, but, to understand why, you need to know how it stores data.
WPML uses WordPress’s custom post type system to store data. This is advantageous because it means you don’t need to retrieve content from third-party servers, but your WordPress database will obviously grow as you translate more content.
For example, if you translate a blog post into German and Spanish, WPML will create two new blog posts, which means your WordPress database now effectively has three versions of that blog post — e.g. English, German and Spanish (in practice, WordPress would also store post revisions).
In other words, as you add more translations, your WordPress posts table grows in size accordingly. Therefore, a one thousand page website that has support for ten languages now has a database size similar to that of a 10,000 page website with no translations.
None of this should discourage you from using WPML, as performance issues will only arise if you don’t deliver cached copies of your website.
If you take advantage of good WordPress caching solutions and store cached copies of your website across the world using content delivery networks, your WPML-powered websites will be as fast as any other. My personal blog, for example, has close to 20,000 rows in the wp_posts table and loads quicker than most other websites.
The Cost of Using WPML
Available from only $29, WPML is one of the most cost-effective translation solutions on the market. In fact, for many website owners, WPML may prove to be cheaper to use than free WordPress translation plugins available on WordPress.org, where important functionality can only be unlocked through expensive plugin add-ons.
The entry-level plan of WPML is called Multilingual Blog. This license costs $29 and comes with one year of support and updates for one website. Future renewals are charged at only $21 a year.
The Multilingual Blog plan gives you access to the core version of WPML I showed earlier in this article, and lets you translate all post types, taxonomies and menus. It also allows you to redirect users based upon the language that’s defined in their browser.
To access all WPML features and functionality, you need to select the Multilingual CMS or Multilingual Agency plan.
Both plans give you access to the same version of WPML, but the Multilingual CMS plan gives you support and updates for three websites and the Multilingual Agency plan has no website restrictions. The CMS plan costs $79 and the Agency plan costs $159, with renewals costing $59 a year and $119 a year, respectively.
Upgrading to one of these advanced plans unlocks support for custom fields, WooCommerce and page builders. It also lets you assign translation work to others, manage attachments in different languages and translate widgets, themes and plugins.
There’s no restriction to how many words you can translate yourself, but additional costs arise if you use automatic translation.
Cost is dependent on the translation engine you use and the number of translated words for each engine.
- Microsoft Azure: One credit per word.
- Google Translate: Two credits per word.
- DeepL: Four credits per word.
WPML offers six different tiers in its monthly credit system. As you’d expect, if you’re translating content into multiple languages, your total credit will increase significantly.
It’s pleasing to see WPML only charges you for the total words you’ve translated in a particular month. This is in contrast to many other translation services that base recurring monthly and yearly fees on the total number of translated words on your website.
- Up to 2,000 credits: Free in CMS and Agency plans
- Up to 5,000 credits: $2
- Up to 15,000 credits: $7
- Up to 50,000 credits: $15
- Up to 100,000 credits: $17
- Up to 500,000 credits: $72
WPML lets you share your credit quota between all of your websites, and a monthly limit can also be applied so you don’t go over budget.
Greater savings can be made if you translate content using third-party translation services and contractors, so be sure to shop around for the best deal.
All WPML purchases come with a 30-day money-back guarantee and access to the WPML support forum.
There’s also an extensive documentation area that’s accessible to everyone where the developers explain every feature of WPML using detailed written and video tutorials.
I’ve been incredibly impressed with what WPML can do — it’s a powerful solution that gives you full control over what’s translated on your website.
I’m always hesitant to label anything as the ‘Best WordPress Plugin’ to resolve any particular problem as every website project is different and budget always plays a big part. That being said, I do believe that for many website owners, WPML could prove to be the most practical and the most affordable translation solution, as you can manage translations yourself.
Those of you who don’t want a hands-on solution may want to look towards translation solutions that are more automated. However, WPML’s Translation Management feature can be used to assign work to colleagues or third-party contractors and companies. You can also use its competitively priced automatic translation service if you wish.
While there is no free version available on WordPress.org, with a starting price of just $29 and a 30-day money-back guarantee, it’s easy to try WPML.
Used/using WPML? Thought and experiences?