There are a few options for running a multilingual WordPress site. The first is to install a separate instance of WordPress in another directory. This is the least ideal way as it will require management of two different installations. It also takes up more space if you have limited space in your webhosting plan (not a problem if you use mine).
The second option is to simply create new pages for your website and give the page names an extension such as index-ja, about-ja, services-ja, etc. Then you can create different menus for each language and place them in different locations or side by side. This works but is less attractive.
The other option is to use a WordPress plugin such as WPML (WordPress Multilingual) or PolyLang. There are others, but I’ll focus on these since I know how they work.
I chose PolyLang, because I was able to try it for free. The free version also includes everything I need for my purposes. The paid version is slightly more expensive than WPML. Since they work similarly, I think I would go with WPML if I needed more features.
What PolyLang does is allow you to link original pages to their translations. The free version also supports plugins, so you can translate plugins, too. Here is an example of what the “string translation” screen looks like:
There are plenty of tutorials (such as this one), but I’ll give a few pointers here that cover the issues that I ran into.
- When you first enable PolyLang, it modifies your static front page setting. It can be scary, because it looks like it deleted your content. Not to worry, though, it’s all still there. You have to go through and assign a language to all of your pages and posts (this can be done all at once). If you already have pages in both languages, this can be a little bit of a hassle. Once you have a language set for each page, you can assign one of them to be the front page again.
- Turn off the auto-detect language extension, which is enabled by default. This option automatically displays your site in the language that the visitor’s browser is set to. It’s very cool, but it added four seconds to my page loading time. That’s simply not worth it.
- When you’re translating strings, be sure to choose “Show all languages,” otherwise it’s easy to put the translation in the source string and end up with translations on your source language pages.
That’s all I’ve got this time. Hope it helps.