Translating WordPress sites
For a good-looking multilingual website, it is also essential that the contents are not only translated into every language but also that the navigation from one language to another is seamless. This is why we’ll be making additional notes to linking the corresponding content together.
You can see an example created by the steps described in this post at
Before you start: get your tools
There is no unified way to translate everything. It takes a few tweaks. We start with three tools—all available as free WordPress plugins.
You need to run the Polylang setup wizard first. This should be triggered as soon as you install and activate the plugin. No worry if you made a mistake or want to add a language later. You can change all settings in the Dashboard under Languages—
Note that the landing page is displayed in the default language (with a star)—however, this feature often fails. The reason is that Polylang automatically detects the language of the viewer’s browser and shows the website in that language if possible. This by experience multilingual people in non-English countries quite often install and keep their browser in English. If you want to display the website in German by default (as in the example above), it might be a good idea to turn off the browser language detection. You can find this option under Languages / Settings—
Assuming you already have your original content in one language, you can simply duplicate this page. This creates an additional draft with the exact same content and setting. You can also translate your pages with help of external service providers directly in WordPress. For example, Lingotek is already integrated into Polylang. You can also use DeepL.
Before using one of the external translation providers it is necessary to prove their conditions for your intended use. (In this tutorial we leave that topic out).
Once you have translated the contents of the page, you can set the correct language. It is also important to link the page to all the corresponding pages in other languages. This way when the user chooses another language in the menu it will seem like they still are on the same page and only the language changed. To create this link, you can simply enter the title of the corresponding page in every language (WordPress will suggest titles as you start typing).
Note that if your page uses forms, by principle you need to create each form in every language first. Then when translating the page you can always insert the same form in the right language. One of the most popular free form plugins is WPForms—
To translate a WordPress post is not much different from pages. You can simply follow the same procedure: duplicate the original post, translate the contents, change the language setting and link the post to the corresponding titles in other languages. After you have translated all pages and post, you already did most of the heavy lifting—there are only a few things missing for your multilingual website.
Translating widgets in headers, footers, and sidebars
Navigation containers like headers, footers, and sidebars consist of widgets. You typically need to create the same widget for each language. This can be done in the theme customizer. Once done, each widget shows only for the predefined language. If all widgets are created in all languages it creates the impression that the website is the same in every language.
For a fully multilingual website, it is essential to translate all menus. This can be done in the dashboard under Appearance / Menus. Once again you need to create a separate content (menu) for each language. You can then select for which languages this menu should show. Don’t forget to click on save after change, your adjustments go lost otherwise.
Translating Cookie Notice popup banner
To translate the cookie notice bar you need to go to the WordPress dashboard and choose Languages / String Translations. You can then filter for Cookie Notice to get only the strings related to this plugin. Note that you might not need to translate everything if you don’t use all functionalities Cookie Notice offers.
Please note that in this tutorial all legal topics are intentionally left out.
If you are not certain about applicable privacy law, we recommend consulting a specialist.
Translating wpDiscuz comment section
Translating wpDiscuz comment section might be the greatest challenge of this tutorial. It is quite easy to change the contents and labels from English to another language; however, for multilingual options a few tweaks are necessary. First of all, you will need to create a comment form in wpDiscuz for each language. It is important to pay attention to the language setting of each form—this determines which form is shown for each language.
If you are not sure what the keys for your languages are (e.g. cs_CZ for Czech), you can always check under the option Languages in your dashboard.
Once you translated all your comment forms, you will notice that there are still some labels that have not been translated. To fix this one last bit you will need to use the .PO / .MO translation files. First, to enable these files, go to your dashboard and choose wpDiscuz / Settings / General Settings and activate the option Use Plugin .PO/.MO Files. You can then go to Loco Translate, choose the bundle for wpDiscuz plugin, choose or add the file for your language and add the missing translations.
Hint: If there is a phrase you need to translate missing, you can return to the language files, click Edit template, add the missing phrase and save. You can then return to your language file click sync and the phrase should be available for translation.
Important note: the multilingual PO / MO files are often reset when updates are executed. it is always good to download the language files and keep them as a backup. Our work can go lost otherwise.
Other text strings
That’s it! If there are any text areas that are still not multilingual after all these steps some troubleshooting is needed. Our first step would be to identify where this text is sourced—if it is a footer, sidebar, or header some adjustment of the widgets in the customizer might be needed. If it is a part of a plugin, then Translations Strings might be the next good step. If that fails, a search if PO/MO files can be implemented for that particular plugin.
Still not working? Please write a comment—hopefully one of us can help.
Creating a fully multilingual WordPress website is challenging as many different elements are involved. In this tutorial, we created a fully multilingual website with 100% free plugins (Polylang, Loco Translate, and Duplicate Page).
Please note that this article is illustrative and cannot provide all specifics regarding this topic. This is free information. We cannot give any guarantees or be liable for actions based on this article.
Did you like this post? Please comment!
Did we say everything right? Did we miss a topic you’re interested in?
Do you know a better way? Please let us know!