Adding multilingual functionality to your WordPress website is easier than ever. Thanks to the growth of the WordPress core and a handful of well-configured plugins you can now create a website with any number of languages and very little effort.
This is a stark contrast with the options we had a few years ago, where you had to hack your way through just to translate all the content on your site. In this guide, we’ll take a look at how you can effectively add multiple languages to your WordPress install.
How To Create a Multilingual Site
One important thing to note is the way a multilingual WordPress site should be created: with a translation plugin. Some may argue that creating a WordPress Multisite installation is better than having to manage everything with a plugin. However, we highly recommend against it.
First off, WordPress Multisite was not originally intended for creating multilingual websites. It is geared towards creating multiple different websites out of a single WordPress install, such as communities or blog networks. This needlessly complicates things when dealing with translations. For instance, you have to manually configure users and permissions everytime you want to add a new language, or you may also lack the tight content integration that a multilingual plugin offers.
Most translation plugins nowadays offer a solid array of tools to keep track of the translated content in your site. If you happen to have a particularly high number of posts, these management tools become indispensable to keep everything up to date. Multisite doesn’t offer any of this and instead, makes everything harder to manage thanks to the added complexity of having to setup the same plugins and themes for each site.
Installing a Translation Plugin
The first step towards translating your website is to choose a multilingual plugin. We personally prefer WPML, which we consider is the best translation plugin by far. While it is a premium plugin that comes at a price, we find it pays itself many times over thanks to its vast array of options. For the purposes of this guide, though, we will be using WPML as it makes everything far easier.
Free Alternatives To WPML
If you don’t like the idea of using a premium plugin, there are a few free alternatives to WPML. You can also use these to translate your website but may lack the premium-level support of a paid plugin. The free options ae:
This plugin is the most popular one among the free WordPress translation plugins out there. It has a long history and has been updated pretty frequently so far. qTranslate separates multiple languages in a single post by using proprietary tags, making for quick switching between languages. One word of caution: if you deactivate the plugin, you might end up with posts having all languages stuffed into the content.
Weglot is an incredible free plugin which you can use to easily translate your website and make it multilingual. Once you install the plugin, it will identify and translate your content into the languages you selected upon installation. Afterwards you can go to the plugin’s dashboard and make the changes you want to those automatic translations. A more intuitive and user friendly translation plugin you will not find!
Polylang is a bit younger than qTranslate but is coming along quite nicely. It creates entirely different posts for each defined language, which makes everything a bit cleaner. However, it has a bit of a steep learning curve, as it doesn’t come with an installation wizard that lets you set up everything right from the start.
Translating Your Site
Once you have installed and activated your translation plugin, you’re ready to start translating your content. With that being said, your content is comprised of more than just posts and pages. There are a few things you should watch for in order to fully translate your site, as well as some important pitfalls that beginners often get stuck with. Let’s take a look at them:
Translating individual posts is fairly straightforward. Once you install the plugin and add the desired languages through the plugin settings, you should be able to see some translation options in the post edit screen. In the case of WPML, you should see something like this:
Alternatively, you can also access your translated posts directly from the post listing:
Both WPML and Polylang will create entirely independent posts for each translation you create. This ensures each translation can have its own content without being dependent on the original one, and thus have different URLs for each one of them.
After translating a post, you need to remember to translate all post metadata too. If you have stored any information as custom fields in a post, you should replicate (or at translate them, if they contain texts) them as well. Some translation plugins may help you out here and let you automatically duplicate your post metadata.
If you’re using a theme that comes with built-in custom fields, chances are you don’t need to do anything special besides filling them out. Because translations are stored as entirely independent posts, their metadata will be correctly assigned to them when saving your changes.
Translating Attachments And Featured Images
Post attachments need to be translated as well. Essentially, a post attachment is any file that has been uploaded to the post page. Doing so will mark the file as belonging to that post. While not necessary, attachments may be used in themes to create rich media experiences such as galleries or slideshows, so it’s a good idea to replicate them. This also applies to featured images, since their use is entirely decided by the theme you’re using and may be an important part of the design.
To translate attachments all you need to do is upload the same files to the translated post. Tedious, isn’t it? Since this may result in multiple copies of the same file on your server, your plugin of choice may automatically reuse that file and create multiple attachment entries for that single file. In WPML’s case, if you have the WPML Media Translation addon you can do this automatically, without having to upload your files all over again.
You can always check which files are attached to a post by opening the Add Media window, and filtering files by ‘Attached To This Post’.
One tricky part of translating your website is the widget areas. Most translation plugins don’t offer a specific solution to this– even WPML doesn’t provide an in-built solution for this yet. You will need to do a little digging and install some additional plugins to make your widgets multilingual.
To translate your widgets, you can use the Widget Logic plugin. This nifty little addon allows you to add conditional statements to every active widget on your site, which you can use to detect the current language and change them accordingly. When using WPML, all you need to do is fill out the field that is created by the plugin on each widget with the following:
Where ‘en’ is the code of the language you want the widget to appear in. For example, if you’re translating to Spanish, the code would be ‘es’. French would be ‘fr’, and so on. Should you want a widget to appear in all languages, simply leave that field empty.
WordPress menus follow roughly the same procedure as posts. You can create multiple menus for each active language, and even customize them to your liking. The latest version of WPML comes with an automatic for syncing menus between multiple languages. However, if you happen to have fairly complex menus I would avoid using it as it can be erratic at times. Always check that your menus are consistent from language to the language after creating translations.
Translating The Theme Options
This is the trickiest part of making your site multilingual. Most themes nowadays include at least an options page where you can configure all the site styling, appearance, and so on. However, it is up to the theme author to provide support for a multilingual theme options page, as some settings may require different values across different languages. For example, our premium themes provide full integration with WPML, allowing you to create multiple sets of options for each language. They also have a language switcher built directly into the site design.
If you plan to have a multilingual WordPress site, you should always check that your theme is multilingual compatible. It’s generally a good idea to go the extra mile and ask the author for the full capabilities of the theme. Doing so will not only save you time and money, it will also ensure you’ve made the right purchase.
Adding A Language Switcher
A very important part of making your site multilingual is to include a language switcher. You’ll want your visitors to have an easy way of switching between the different available languages, especially if they’re deep in your page hierarchy and don’t want to go back to the homepage.
WPML gives you a wide array of options to do this. If you go to the general settings page of the plugin (remember, WPML > Languages), you can find a section for configuring the language switcher. This special menu will display all your active languages automatically, with the advantage of always linking to the corresponding pages.
For example, if you’re browsing the About page, the language switcher will take care to directing you to the different versions of the same page. What’s more, if no translation is available, the switcher will hide links that take you nowhere.
You can install it in three different ways:
- You can simply tell WPML to add its own language switcher in one of the sidebars of your theme.
- You can manually insert the icl_language_selector code into the layout of your theme to better control its location.
- You can rely on your WordPress theme being integrated with WPML and doing all of this for you.
While inserting the language switcher in the sidebar is by far the simplest option is recommended that you always try to keep it visible and at the very top of your website. This may be good enough for blogs with a sidebar, but for full websites, it is preferable to have it in the header.
If you’re using a premium WordPress theme, chances are that it will provide support for this and save you all the work. If you’re using our premium themes, they will automatically embed a custom language switcher in the site header as soon as WPML is activated.
If you have followed this guide thoroughly, then virtually your entire site should be translated thanks to the WPML multilingual plugin.
One final word of caution: if you’re the least bit serious about having a multilingual WordPress site, please don’t use Google Translate to do it. Not only are automatic translations very inaccurate, they may also cause Google to penalize you for having essentially duplicate content. Always consider having an expert translator do the job instead.
40 thoughts on “The Complete Guide To A Multilingual WordPress Site”
I am a writer and i need a theme that displays links to all ebook stores where my books are being sold.It must be multi language and show links to all my translated works.where can i find such a theme?
Our premium themes are designed to work with WPML, so you could use them to create amultilingual site. You could take advantage of a portfolio theme and use it to display each of your published works. Since you can add any content you want in the visual editor, you’d be able to add links or buttons.
Currently i have a multi linguistic site which is in 3 different languages. I do not have issues with content translation. All the posts are getting translated very properly the only issue i am dealing with is meta data is not getting translated in all the languages except in english properly. I am using ALL IN ONE SEO PACK plugin free version, i believe the free version does not support multi-lingual meta data translation. Paid version of all in one seo pack is recurring which i cannot afford so please advice.
Make sure to mark the meta fields in WPML’s settings as Translate, and not Copy or Do Not Translate. Since translations are completely independent posts, you should be able to apply different metas to each language separately.
Thank you a lot. This article helped me a lot since I am starting to remake all my sites. I was using subdomains before to separate the language, but I am not planning to go wthis option anymore. Thnx again
Can I also add Google translate button on the website?
It’s possible, but I wouldn’t recommend an automatic translation, on any site.
Why you don´t recommend this? I am looking for a translator for my user comments, and this was the “best” way to do it, since user clicks butto and translates the whole site, that is the only problem for now, great would be just the comments! Is this possible with WPML? Thank you
CAT (computer-aided translation) has come a long way, but it is still no substitute for an actual human being who understands both languages. A human is better at tailoring text to certain dialects of the same language, for example. And personally, if I saw a website that displayed localized text generated by a computer (it’s pretty easy to spot) instead of a human, I would question how much that company knows or cares about its global customers; which, in turn, could influence whether I decide to do business with them.
Thanks for post this is helpful
I’m not the autor of the Polylang plugin, but i’m very satisfied with the way the plugin works and i must say those are some really lame “cons” you talk about. A “steep learning curve” is a single settings page with very simple and easy to understand settings? Why would you need a wizard to setup languages for a site? If i was able to set it up, then anyone can do it. Plus it’s free unlike that overpriced WPML (which i used some time ago when it was free and didn’t like it beacause it slowed down my site, but maybe that’s changed and they’ve improved on that).
You must keep in mind that not everyone can catch up as quickly when dealing with software. From my work with clients, I’ve seen people easily get around WPML, and others who even struggled with the wizard! Every now and then, I still get a few emails asking for support from people that use WPML in their sites.
And I’d contest that having something for free is better than paying for it. In a formal purchase, the seller will have to offer some degree of support, be it good or bad. With a free product, the author does not have an obligation to even respond to your inquiries.
This is an amazing article!! I’m looking at doing my very first multilingual site and was quite nervous about it, but now I feel like I have a good guideline to follow!
I’ll be purchasing the WPML plugin but I know it doesn’t actually do any of the translating. So then whats a good avenue for that? I only know of 2 options to get the translating done and of course it depend on my clients budget, however I know it’s not that big.
Option 1: Head over to iCanLocalize.com for a professional to translate 2 different languages @ .11 – .14 /word.
Option 2: Use a web based translating software. Google Translate?
Is there only two options to get this done? Any advice on the actual translating itself would be great. Thanks and thanks again for this amazing article! Bookmarked!
Glad you like it Amber!
Yes, normally those two are the options you have when translating a site: either doing it by hand or with a translator. Still, I’d be wary about using an automatic translator since they may produce plenty of errors in the process.
I suppose you could try Fiverr for a cheaper translation.
Just an offtopic question: what font do you use on this site? It looks kinda great on my tablet and i would also like to use it on my site. I will also implement multilang on my site using your tutorial.
I hope i will get an answer.
We’re going with Open Sans, from Google fonts. It’s one of the better ones for body copy ;)
How you suggest if I use multiple wordpress installations in different subdomains or folders or my website as I want to translate selective pages and posts (from my original website that I am building at the moment) into other languages.
Any suggestions please?
The WPML plugin lets you translate only what you need to, so you can use it for a partial translation as well. Unless you need to create completely different websites with a different page structure, I’d recommend sticking to a plugin. In the long run you’ll save tiem due to all the automated redirects, langauge switcher, canonical pages, and other things that WPML does under the hood.
Just thought I’d mention that with Polylang you do not need any extra plugins to control widget language.
Given you cannot, yet, translate widget titles and such, but Polylang does give you an select menu where you can choose with which language the widget should show. So you could just ad another widget for the other language! :) Easy
I have a question, for WPML, which plugin should i use?
I am interested in publishing articles with citations and words from different languages, incl Asian, European, Arabic, etc. Your article covers translation. I am not interested in translation. I am talking about an article with several words in many different languages in it. Is this at all possible? I can easily get a few words in French now with my version of WP, but when I try to introduce Russian words in an English-language article,, for ex, it comes out as a row of question marks.
Yes, it is. If junk characters appear, that might be due to your template files not being properly encoded as UTF-8. To the extent of my knowledge, non-latin characters make use of an extended character set not included in ASCII, causing them to appear as question marks.
You’d have to re-encode all files in your theme (and possibly WordPress and your database, too) to make sure you can use them.
Thanks for the article, nice and clear explanation.
Would you suggest translating a Wócommerce shop with WPML too?
Yes, they both work well with each other :)
Thanks for sharing these useful ideas to turn a WordPress into a multilingual website for an easier way to reach customers. I wanted to share also a good online resource for those interested in reading fresh and interesting news about localization.
1. qTranslate Plus
4. Ajax Translator Revolution WordPress Plugin
I have been using the WPML plugin for some time… what was to follow was a nightmare… we ran the plugin for a 2nd language for quite some time… and then figured that the plugin was quite a resource hog – as measured by: P3 (Plugin Performance Profiler). We saw that 70% of the resources consumed on our website were by this Plugin. And that by removing WPML we could speed up response time of our website by up to 50%.
So we decided to uninstall the plugin and run the 2nd language manually. What was to follow was and still is an ongoing nightmare.
WPML the plugin from hell, will modify the database irreversibly. So that after uninstalling the plugin the database is compromised.
The result is that permalinks on the website are wrong. We had countless conversations with WPML support and they could not provide a solution. So we have now programmer working on this manually changing links in the site… back to what they are supposed to be.
All hell broke loose when we upgraded from WP version 4.3 to 4.4 – that is when the links in the site got screwed up.
And we have to pay dearly for this reparation of the site. Our programmer is still working on getting rid of the damage that WPML did to our website.
So be very careful betting your site on the WPML plugin. For us it turned out to be a huge mistake.
And we had to learn that their support sucks greatly.
How can I translate portfolio page?
The portfolio items can be translated just like you would with any other post or page. They are custom post types, after all.
You’ll need a professional translation services my friend :)
I’m planning on making my website a multilingual one but don’t need to translate all the content. I want the flexibility to have some posts/pages in a single language while others in multiple languages.
Would any of the mentioned plugin offer that option?
WPML will do just fine for you. I have no experience with the others, though.
WPML is the only one I have personal experience with. I have used it for a while now and it does everything I need it to do.
Outstanding post! Thanks for sharing your great experience through this effective and helpful tips.
My programmer iss trying to convince me to move to .net rom PHP.
I have aoways disliked the idea because of the costs.
But he’s tryiong none the less. I’ve been using Movable-type onn numerous
websites for about a year and am nervous about switching
to another platform. I have heard great things about blogengine.net.
Is there a way I can import all my wordpress poxts into it?
Any kind of help would be greatly appreciated!
Great post !! I like it very much.
Very interesting article Aigars, I really admire your knowledge on the topic. Totally agree with the importance of having a multilingual site, if your audience is made up of individuals representing different languages, putting forth the work toward creating a well-done multilingual WordPress website will create an awareness of your brand, product or service as being extremely inclusive and accommodating.
I think our latest blog post might be of interest to you as it also discusses the same subject of what we should take into consideration when building a multilingual WordPress website. Having your feedback regarding the article would be highly appreciated.
We are building a custom theme with BeaverBuilder for the front end and custom theme for logged in users. We have been able to translate both the beaver builder front end and the custom theme part. We are having a hard time translating the login page and I’m wondering if there is a filter or hook I can use to get the login and forgot password pages translated. I understand there is an ICL_LANGUAGE_CODE variable that is set as the user navigates the site. Can I use it somehow to translate those pages?
Hello, I need assistance!
I’m creating a multilingual website and I have some problems with the spanish section. IN the news page in English and Italian the post I have created (in Italian) is perfect, but when i look at the news page in spanish it doesn’t appear.
I don’t understand wher the problem is.
Thank you in advance
Thank you for the great article. These plugins are for sure do their job.
If you might want to try even simpler translation solution then check out ConveyThis plugin.
It’s not working the same way as WPML, for example, and there is no such deep setting but nevertheless it is intuitive and works very fast. The plugin does not access the user’s database, it just scans the pages of user’s website, editing your translation is a click away in your account and also the immediate access to professional translations.
thanks for this great tutorial