Make your WordPress site multilingual with Polylang.

Make WordPress Multilingual with Polylang: Step-by-Step Tutorial

Having a multilingual WordPress website which is optimized for SEO can really help boost your traffic. It naturally expands your site’s audience by showing up in search results for multiple languages, some of which have much less competition than English-language results.

There are a number of ways to create a multilingual site, and you can even integrate Google Translate into your site if you really want – it’s the worst way to translate your site, so please DON’T do this. While Google provides a plethora of outstanding products, Google Translate leaves a lot to be desired.

Machine translations will simply NEVER be as good as those done by humans. Computers do a pretty good job with simple terms and sentences, but fail big-time when it comes to interpreting everything accurately.

If you’re looking for quality shared hosting for your WordPress website, we highly recommend A2 Hosting. They offer unlimited SSD space, free automatic site backups, hosting optimized for speed and 24/7/365 guru technical support.

Check out the video below if you’d rather watch a tutorial for creating a multilingual site with WordPress + Polylang:

In this post, I will teach you how to use Polylang in conjunction with Yoast SEO to create an optimized multilingual WordPress website. I strongly suggest hiring professional translators to create the other language versions of your site (unless you’re like Pope John Paul II and speak a whole bunch of languages).

Please keep in mind that you will need proper translations for all posts, pages, media items, categories, tags, custom post types, custom taxonomies, widgets, navigation menus and URLs. Your site may not use all of the previously-mentioned items, but I included them anyway.

Do your site visitors a favor, and use human translations. It has such a huge impact on the quality and readability of your site and its content, and your readers will greatly appreciate it.

I think it’s better to ONLY have your site in one language than to use inaccurate machine translations.

Installing Polylang

Make WordPress multilingual with Polylang.

The first step is to install and activate the Polylang plugin. Make sure you are using WordPress 4.0 or later before you perform the installation. You should always keep WordPress up to date, but that’s beside the point.

If you were using any other multilingual plugins, make sure you deactivate them before you activate Polylang. If you don’t, things can go awry.

Head over to Plugins in your WordPress Dashboard, then click Add New. Search for Polylang and click Install Now. Next, go to the settings page and add all the languages you plan to use on your site.

Languages settings in Polylang
The Polylang languages area in the WordPress dashboard. Add all the languages you want here, and mark the default language by hovering underneath and then clicking in the star column in the language row you want to select.

Once you select a language, it will automatically fill in the following fields – Full name, Locale, Language code, Text direction and Flag. The only one left empty is the Order field, where you can select the order in which the languages will appear in the navigation menu. You will want to set your default language to Order 0, which will make it the first language in your navigation menu.

Setting the default language

Setting the default language in Polylang

To set the default language, simply hover over the star in the language you want to choose, then click it when it turns blue (see screenshot above).

Strings translations

Strings translations in Polylang

Under Strings translations, you can set the translations for a wide variety of elements throughout your site, including the following:

  • Basic WordPress items such as site title, tagline, date format and time format. 
  • Any Widget items you’re using in a sidebar, footer or anywhere else on your site. The strings translations gives you finite control over both the title and content of your widgets, letting you create versions for all of your site’s different languages.
  • Yoast SEO items such as home (for breadcrumbs display throughout your site), sitename, excerpt, site description (sitedesc), archives, 404 pages and more. With most of these, I leave them alone because by default, they’re setup properly. When you have Yoast SEO configured well, you will optimize each page and post directly in the Yoast SEO box.

Translating widgets

Strings translations for widgets in Polylang.

Polylang makes it easy to add widgets for all the languages on your site. When you add a new widget, it will be shown for all languages by default. Once you save the widget, you can use Strings translations to create all the translations for it.

In some cases, you may want to only display a particular widget in only one language. To do this, simply choose the language from the dropdown in the widget.

There could be more strings translations to setup depending on the plugins you use on your site. For example, if you are using a gallery plugin, you may want to set gallery names and photo captions in all languages other than the default.


There are a couple items to configure under Languages > Settings. We’ll go over the ones that are important. Please note, the settings I include below are simply those that I have used in the past. I did a little research and looked at quality multilingual sites, then modeled the sites I created after them.

You may want to use different settings on your site based on site structure and whether you’re using subdomains, among many other things.

URL modifications

URL modifications in Polylang language settings

Here, you can adjust the appearance of your site URLs. I recommend the settings that yield the simplest and shortest URL structure.

Permalink settings in WordPress dashboard.

Before you set these options, choose the proper Permalink configuration under Settings > Permalinks. Make sure that Post name is selected and save your changes.

Back in the URL modifications, you will want to make sure the following are selected (with dot or check mark next to them):

  1. The language is set from the directory name in pretty permalinks.
  2. Hide URL language information for the default language.
  3. Remove /language/ in pretty permalinks (simple, shorter URLs are generally better).
  4. The front page URL contains the language code instead of the page name or id.

Detect browser language

Activate detect browser language in Polylang settings

You want to click on Activate under Detect browser language. This ensures that when someone visits your site for the first time, they are directed to the homepage in the language according to the language settings in his/her browser. If the visitor’s browser language doesn’t match any of the languages on your site, the default language will be used.

Please note that this options only works when the language is either chosen from the content, directory name in the URL or from the subdomain. If you’re using multiple domains, you will need Polylang Pro to use this feature.


Media item translation setting in Polylang.

The media module is activated by default, and serves the purpose of translating all the text associated with images – title, alt text and description.

Translating the media item information for each language is a great way to help optimize your images for SEO, but it’s up to you. If you don’t want to use it, simply deactivate it.

If you want to create translations for all of your media items, leave the media module activated. When you edit items in your media library, you’ll be able edit the image info for your default language, and then add the translations for other languages.

Adding media item translations Polylang.
  1. Select a language from the dropdown menu.
  2. Enter media information, including Title (above image), Caption and Alternative Text (below the image). You can also enter description, but I wouldn’t worry about it. Most themes don’t seem to show it anyway. Of these three, the Alt text is definitely the most important for SEO.
  3. Click the Update button to save your changes.
  4. To add image info for the other languages, click the + symbol next to the language you want, and repeat steps 1-3. Make sure you click Update after all information is added for each language.

Creating translations for pages, posts, categories and tags

Become familiar with the + symbol because you will use it a lot to create translated content. In pages and posts, it is in the Languages module under Translations in the upper right side of your screen (refer to screenshot).

Creating pages/posts in other languages using Polylang.

To create languages variations for pages and posts, follow these simple steps:

  1. Create a new page or post, complete with title and body content.
  2. Click Publish.
  3. While still in the page/post, click the + symbol next to the flag of the language you’d like to add.
  4. Repeat steps 1 and 2 for the content in that language, and all others that you plan on using.
Translations for categories

For Categories and Tags, the + symbol is in the row of the original category or tag.

To add language variations for categories and tags, do the following:

  1. Create a new category or tag in the default language.
  2. Click Add New Category or Add New Tag.
  3. Then, click the + symbol under the corresponding flag for the other language/s you want add.
  4. Repeat this process until you have all categories in every language you want to use on your site.

Once you’ve already created translations for all of your items, the + symbol will be a pencil icon instead. Click on it to edit translated pages, posts, categories or tags for each language.

Page translations in Polylang.

In the above graphic, the check mark (1) indicates that the page is in English, while the pencil next to it (2) lets you easily edit the other language version (Polish in the graphic) of that page.

Language switcher

Language switcher in Polylang menu screen options.

Most multilingual sites display flags or text that lets you switch between languages, and Polylang provides this option. You can display it in menus, widgets and other areas.

Navigate to Appearance > Menus in the WordPress Dashboard and look for Language Switcher on the left-hand side. If you don’t see it, expand the Screen Options area at the top and tick the box next to Language Switcher (see screenshot above). Simply grab it and move it over to your menu.

In order to use the Language Switcher as a widget, head over to Appearance > Widgets, and then drag the module over to the widget area on the right, where you want to display it.

Now, you can add a language switcher to any menu or widget on your site. Generally, it’s best to add it to the main menus for each language you use.

If you’re comfortable editing theme files, you can even add the language switcher without using the widget. Simply use the following template tag in your theme:

<ul><?php pll_the_languages();?></ul>

You can also choose to only show it for one language, but I’m not sure why you’d want to do that. I don’t remember having ever seen one in a widget, but don’t let that stop you from trying it.

You can set the following language switcher options after you add it to your menu or widget: 

  • Displays as a dropdown
  • Displays language names
  • Displays flags
  • Forces link to front page
  • Hides the current language
  • Hides languages with no translation

These options are useful, so make sure to configure them in a way that makes the most sense for your site.

Language switcher menu item in Polylang

With the multilingual sites I’ve created, I chose the following options:

  • I displayed the flags but not the language names – It looks better, and having both is overkill in my opinion. People know what their own flag looks like so writing out the name is unnecessary.
  • I also hid the current language – If someone is already browsing the site in their preferred language, there’s no reason to show it again in the menu.

Optimizing your multilingual site with Yoast SEO

Yoast SEO WordPress plugin for Search Engine Optimization

After you set up your multilingual site, it’s important to make sure it’s optimized for Google.

To do this, you’ll be using Yoast SEO. It is a must-have plugin to help you properly configure all language versions of your website, including:

  • Titles for both pages and posts – this is the single most important on-page SEO element
  • Meta descriptions – snippet that appears below the title in search engines. Create compelling copy here to encourage searchers to click through to your result.
  • Permalinks – remove stop words from slugs, shortening and simplifying them.

We’ll go over all the important settings to make sure your site is primed for the search engines.

First, go to Plugins > Add new and search for Yoast SEO. Once you find it, click install, then activate.

After you set these elements in Yoast, you will use Strings translations to easily translate them.

Page/Post Titles and Meta Descriptions

By default, Yoast SEO automatically sets page and post titles based on your content using a variety of shortcodes.

It is much better to write custom SEO titles and meta descriptions for both pages and posts, and you can easily do this within the Edit Post or Edit Page areas. You’ll find this below the body content area in the Yoast SEO module.

Yoast SEO module in WordPress pages/posts.

In order to set the post/page titles and meta descriptions, do the following:

  1. Go down to Yoast SEO module and click on Edit Snippet.
  2. Enter your desired page/post title in the SEO title area.
  3. Add engaging copy to the Meta description box. Well-written meta descriptions encourage searchers to click on your result and not someone else’s.
SEO title and meta description in Yoast SEO module.

Yoast provides a colored bar which turns green when the length of both the SEO title and Meta description areas are ideal. Make use of it, and try to create titles and meta descriptions with optimal lengths.

Advanced settings

Advanced settings pages enabled in Yoast SEO.

In order to see some of the options in Yoast SEO, you must first enable the Advanced settings pages. To do this, go to Dashboard > Features and make sure the slider is set to Enabled (see screenshot above).


Remove stop words from slugs in Yoast SEO.

Yoast lets you remove stop words from your site URLs, which helps simplify and shorten them. In the Clean up permalinks section under Advanced > Permalinks, set the slider to Remove. Now, when you create a new page or post, Yoast will automatically remove these unnecessary words from the slugs or permalinks (shown right below the title at the top).

With the free version of Polylang, you have to use different URLs for all language versions of each page and post. In their premium version, you can use the same URL across all languages. While this may seem like a nice feature, it is not totally necessary in my opinion. I use the free version, and my URLs are different for each language.


Using Polylang in conjunction with Yoast SEO to create your very own optimized, multilingual WordPress site is a great way to boost your site’s organic traffic by providing content in more than one language.

Do yourself a favor, and use quality translations for the languages used on your site. Don’t rely on Google Translate, as machine translations are highly inaccurate and reflect poorly on your brand. If you want quality traffic, provide quality content.

You may be surprised by the jump in website traffic from areas all over the world.

Are you struggling with making your site multilingual? Leave comments and questions below, and I’ll try to help you (no guarantee that I can fix your problem).

If you found this post helpful, please share it and spread the word!

Want more like this? Sign up for my newsletter to receive helpful WordPress Tutorials, Tips and Tricks.

12 thoughts on “Make WordPress Multilingual with Polylang: Step-by-Step Tutorial”

  1. Hi,
    Great post, thanks!
    Any idea why in my case I do not have the option/drop-down to choose for which language I want to show the widget? I use Elementor, Polylang and Polylang Connect for Elementor, all free versions.

  2. Hello,

    I use both polylang and yoast. I have a problem. My wordpress is set in french. Let’s say I write an article in french and Yoast tells me the readability is good and it showing me the green happy face.

    Now I am creating an english version of this article using polylang but this time yoast gives me a bad readability. It’s because it’s still checking it in french. How do I make Yoast changing his settings to fit the language I’m using?

    Thank you

    1. Thanks for stopping by. I am not sure how you’d adjust that, but I wouldn’t obsess about good readability as per Yoast SEO. Just make sure you’re using good titles and meta descriptions, and it’ll be fine.

      Hope that helps!

  3. Hello,

    Nice tutorial ! It works great !
    But I have a problem, when add a language and when I go I the create page in this new language, all the dashboard of wordpress come in this language (Publish written Is Chinese, etc…). If it is English, it is ok but in Chinese, I don’ t understand where to click.

    How to do to work in a page of the new language but wordpress stay in the primary language ?

    1. Hey Vincent, thanks for your comment. Regarding the WordPress dashboard interface, it should be set to the language chosen under Settings > General > Site Language. It should not be changing this based on the language of the page you’re creating.

      Hope that helps!

  4. Hello….

    I think that there is some missing part… what about home page filled with sections… how to translate this? I have 2 separate pages but all the sections are always in default language…

    How to solve this?

    1. You should be able to create translations for a widgetized homepage either by duplicating the page for other languages or using the Strings translations settings within Polylang. With some themes, you can also add different homepage widgets in the WordPress customizer on the front end, and choose which language they’re for.

  5. Hi,

    Thank you for the article. I’m using both Polylang and Yoast SEO plugins for my EN/PL language website. For a couple of hours today, I’ve been trying to figure why my EN home page has slug which I can’t remove. I can change it to whatever I want but can’t delete it. When I do, it creates new slug from the page title.

    It is very annoying… I thought that it might be because of using Polylang which give you the option: “The front page URL contains the language code instead of the page name or page id”. In the actual URL of the homepage, it doesn’t show the slug, but I’m still worried why I can’t remove it and that it can damage google indexing, etc. Could you please help me with it? Thank you.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top