Multilanguage Globe Globalization Icon

WordPress Multilingual: Guide for Internationalization

There are several reasons for translating a website to other languages. But setting up a WordPress site or blog multilingual, there are many things to care about.


You don’t only speak and understand English and have the resources (time and/or money) to translate your website or blog? Then I tell you know why it’s really worth to offer contents multilingual and how to do so.

In advance: sorry about my bad English. I’m from Germany and not a native speaker. I try my best but if you find any fault, feel free to tell me how to correct that.

Chances for multilingual websites and blogs

There are two main reasons for multilingual sites. With additional languages you can

  • reach more people in your country, who may not speak your language as good as you do and so search in their native language
  • reach more people in foreign countries.

So, this perspective primary opens your possible reach. But, secondary, contents in other languages also may succeed faster:

What I mean is that contents, which are not in the mother language, are rare and so there’s also less competition. So, you can reach faster better rankings and more people online. These people will take more time to focus on your site and offers and so will additionally show Google, that your whole website (even the contents in English) is worth to be indexed better.

I tested that some years ago by translating our website and focusing on German SEO services. Within a short time we received much more and better leads from English speaking people who actually lived in Germany but also from two very big companies from Spain and USA.

Another reason for a multilingual WordPress website, shop or blog is a better image. With more than one language online you signal your customers that you’re educated and open for globalization and other cultures.

So, these advantages are reason enough to translate your site into other languages. But how does this work?

The best multilingual plugins for WordPress

I tested a huge bunch of plugins in the last 5 years, since I use WordPress professionally. Actually, there are only two to recommend: WPML and Polylang.

WPML is only available in a commercial version from US$ 29,-, but it’s also the most extensive and most compatible solution: that’s because most of the themes and plugins are optimized for multilingual usage with this broad tool. But, in this case that also means that WPML is also a little more difficult to use than Polylang.

Polylang is also available in a pro version, but I think the free version is enough. It’s much easier to use as WPML and also has extensions (so called modules) with which you can auto translate contents (never do that!) or to hire translators.

In summary WPML is my first choice for more complex projects like websites, portals and online shops. Polylang is better for blog translation, as it is simply easier to use and basically free.

By the way: some people translate their websites with a multisite installation of WordPress. I don’t recommend this way because you can only hardly connect each translation and so have much more work with the translation process.

How to prepare before setting up WordPress multilingual

Before you install a multi lingual plugin I recommend you that all contents of your site exist already in your mother language and don’t change that soon (except blog posts). That’s especially important for new websites and blogs, to avoid double work and to keep the overview. In advance: making a website available in more than one language is much work – don’t underestimate that!

So, if you launch or relaunch a website first finish all basic contents and only start the translation if that preparation is finished.

To organize the later translation you can hire a translator or book a translation online. Else, you can also translate the contents by yourself, just like I do. But always try to let someone else read through your (important) contents to avoid mistakes. Never use Google translator or other tools for whole translations, as they’re not good enough yet. If you use it you really risk a image damage. If think you know what I mean when you think about a bad translated menu in a restaurant in another country. If that happens, you can be sure that the meal will also be bad.

Please also make yourself and the persons who are involved in the translation process aware of cultural differences: A thumb up means in most of the western and south American countries something positive, but in the Middle East it’s an insult.

After that preparation you may start setting up the multilingual plugin of your choice. I start now with a tutorial for WPML and then tell you how to set up Polylang best. So just focus on the chapter of the tool, you want to use. After that, I continue with some more basic hints and tips.

Setting up WPML (“WordPress MultiLingual”)

First you have to purchase a license of WPML. Then download the files (“sitepress multilingual cms” is regularly the only one, you need) and upload them in your WordPress system (go to plugins > install > upload plugin).

Then open WPML and follow the installation wizard. The first step is to choose the basic language of your site, with which the existing contents will be marked.

Screenshot WPML Setup Step 1
Screenshot from WPML

In the next step you choose all languages you want to add to your website. I recommend you to start first with one language and add further ones after you finished the first translation, to keep the overview.

Screenshot WPML Language Selection
Screenshot from WPML

In the third step there is a huge page around the language switch button / link. Here, you can select where in your site you want to insert the options.

I recommend you to insert the language switch in the header area: in a widget section or a menu. That shows all visitors directly on their first stay, that you also offer information in different languages. If you have more than two additional languages, you should think about a dropdown menu. You can also change these settings later and experiment with different kinds of styles. Maybe it’s needed because the CSS styling of WPML is a horror show.

Screenshot WPML Language Switch Setup
Screenshot from WPML

In the last step you fill in your license key and register your copy of WPML. That’s it for the installation wizard, but the preparation is not finished yet:

Important additional setting for WPML usage

Please visit in your WordPress menu WPML > languages. There you should have a look on the language url format. I recommend you to switch that setting to “use languages as directories”. Don’t activate the sub checkbox “use directory for standard language” as this can change all your existing urls, so break existing links and so lowers your existing visibility.

Regularly WPML doesn’t specify or limit the regional focus for your languages. That’s good but can be annoying, if you have different versions for countries with the same languages like USA and the United Kingdom. If you want to limit a language you can later visit the language settings and specify the language code. E.g. from “en” you then make “en-US” in a first English language and “en-GB” in a second English language.

After that you continue with the translation process as mentioned after the Polylang tutorial.

How to set up the Polylang plugin

You can install Polylang easily via WordPress’ plugin repository: click in your WordPress website, shop or blog on Plugins > Install and search for it. Then follow the installation process.

After that visit Settings > Languages to set up Polylang.

Screenshot Polylang langage setup
Screenshot from Polylang

In the left column you can “Add new language”. Start with the language in which your existing contents are. Choose from the first dropdown menu the language and region, from which you want to pull multi lingual information from WordPress directly, but also from your your theme and plugins.

There you’ll see some code like en-US. The first part of the code is the language shortcode, the second the regional focus of the translation files. But, this doesn’t yet mean that your contents will only be shown in this region. It’s basically just for the files.

If you really want to “limit” your contents on a specific region (this happens very rarely), you then should precise the information under “language code” with the regional attachment. E.g.:

  • United Kingdom: en-UK
  • Germany: de-DE
  • Austria: de-AT

After you’re finished with that setting click on the “Add new language” button.

Then the system will ask you if you like to mark all existing contents with that language. Click on “Yes” to do so.

Then add the next language(s), in which you want to offer your contents in future. I recommend you to start first with one additional language and to finish the whole translation first, before adding more languages in order to keep the overview. Now, you’re almost done with Polylang’s settings. Almost!

Very important additional setting for Polylang

Regularly, Polylang automatically adds lingual information to every url of your site. This is good for additional languages but not good for your existing url structure, as many links can break (especially external links) and so you loose link value and may also worsen the user experience of your site. This hint doesn’t affect completely new or relaunched sites, as there you often don’t have any existing rankings (new site) or should redirect every old url to the new structure (relaunch).

To forbid Polylang to change your existing contents’ urls visit in Polylang “Settings” and then module “URL modifications”. Then activate the function “Hide URL language information for default language” and save the settings then. After that, start with the translation process.


Screenshot Polylang URL modifications
Screenshot from Polylang

Finally, visit the menu manager of WordPress to add the language switch to your menu. I recommend you to use a menu which is visible above the fold. So, the header area is the best part to show you visitors, that you also offer your contents in other languages.

The translation process in WordPress

I split then the translation process in 4 steps:

  1. Set up a test translation and check the code
  2. Check all visual information of your site
  3. Translate menus, categories and tags
  4. Translate the contents and spread the word

1.     Set up a test translation and check compatibility of your theme and plugins

Screenshot from Polylang in WordPress
Screenshot from Polylang in WordPress

What to do is almost clear: take a blog post or a page, edit it and add a translation via the translation widget in the top right (it’s almost the same in WPML and Polylang). You can also click on the plus icon the items overview under the language, which you want to add. Then add in the translated content a sample headline and some dummy text. After saving that content, open the published item in the front end of your site.


Then first check if the code for the translations works correctly by inserting the link of your sample content in the Href lang Testing Tool. If everything is green, continue with the next step.

If Href lang tool shows you any errors, this is often because there’s another wrong “canonical” tag in your WordPress system. To check which plugin is responsible for that, switch off one after another (please back-up your site first) and re run the Href lang test. In our SEO plugin for example, you find the option for canonical tags (which is regularly deactivated) in the basic settings, when you have the expert settings displayed. Also try to change the theme and detect so, if it’s the reason for the error(s). Often you can deactivate in themes or other (SEO) plugins these canonical tags. If this doesn’t take affect, please copy the following code to the end of your themes’ functions.php file:


<span>// Remove WordPress’ canonical links</span>

<span>remove_action(‘wp_head’, ‘rel_canonical’);</span>


This prohibits WordPress to create any canonical tag. At least then the Href lang Testing Tool should give you green lights.

2.     Check all visual information of your site

Then go through your demo content and check, if every visual information like widget titles, meta information etc. are translated correctly. If not, you have to change that:

Widgets can be set up for all or specific languages natively with Polylang. For WPML, you need an extra plugin called WPML Widgets.

If theme or plugin information is not yet translated look for languages files. All good themes and plugins regularly are prepared for being translated and so – if you have good luck – you just have to copy the language files you need via ftp in the plugin’s directory (regularly, there is a sub folder which is called “lang” or “language”, where you also find the existing .mo and .po files). If your theme or plugin and the community doesn’t offer translations or the translations have mistakes, you have to do it by yourself. This is a little more difficult and if you’re not experienced, I recommend you to ask someone who is. In the worst case you can also hide some information with CSS.

3.     Translate menus, categories and tags

You almost reached the last and biggest step: the translation of your contents. Before that, you should translate the menus, categories and tags of your site. That’s important why the auto and quick add functions for menu items etc. of WordPress are not optimized for multi lingual usage. So you have to set up everything manually. That sounds like much work, but this goes relatively easy, regularly.

In WPML you just have to click the add (plus) icon for an existing category or tag in the row for each language, where this icon appears. It means that there isn’t any existing translation yet (connected). You can also open the item and then add the translation there.

Polylang automatically sets up translations (but without translating the tags and categories), so you just have to edit them by clicking on the title or on the hook.

Screenshot from WordPress and WPML: Translate WordPress Categories
Screenshot from WordPress and WPML

To translate a menu you just have to add a new one over the menu manager, set it up in the correct language and (in WPML) link it with the original one.

4.     Translate the contents and spread the word

Until here, you’ve already done a bunch of preparations. You’re finished with that and now may start with the real translation. For the translation of your content I want to underline something very important (again).

Always ensure that each translation is connected with each’s original post !!!

To do so, open a post in the editing mode. In the right column you’ll see a language widget where you find information about the actual content’s language and the item of the other language(s), with which it’s connected. If the translation input box is empty and you already have set up a translation (which sometimes occur due to errors), fill in the title of the translation there. If it doesn’t appear through the auto completion, please ensure that the language of the original content is set up in the original language and that the translated language is also set up correctly. Then retry.

Additionally, I want to give you brief explanation of the translation icons:

Screenshot how to translate contents in WordPress
Screenshot from Polylang and WordPress
  • The pen icon means that this content is set up in the language beneath or (close) besides. A click on that opens the editing mode of it.
  • The hook icon means that there does a connected translation of this item exist. By clicking on that, you also edit the item which is titled on the left column. So don’t think you open the translation by clicking on the hook.
  • The translated version can be accessed by clicking on the pen icon. So, you don’t open the item which you hover with your mouse, but it’s translation.

For me this is a little confusing. To keep the overview I filter contents by language by using the language function in the top menu of WordPress.

Finally, I’ve got 3 tips for your translations

  1. Start with the translation of static contents like pages and then continue with actual contents like blog posts.
  2. Then prioritize the translation of actual contents by checking, which ones are frequented most. For that, visit e.g. Google Analytics. Actual contents, which aren’t worth to translate or don’t make that much sense in another cultural context, may be skipped.
  3. Try to translate new posts directly as later translations are often harder (to motivate) and the communication also becomes more difficult: That’s because some platforms like Facebook offer you to publish multi lingual status messages. Other platforms (like Twitter) should then be used for seeding with different language accounts.

So, there’s much work waiting for you. If you make any (other) experiences, please let me know here in the comments.