From the very first time you start developing your WordPress site you begin to realize the lack of support for multi-language web sites.
Solutions
There are several methods to making your WordPress site multi-lingual. Some are more difficult than others and some get quite complex. In general, making your WordPress site multi-lingual is done by installing WordPress in more than one language and using a plugin so that users can switch between them. Most plugins will require you to manually install .mo language files. Many of them make this easy by letting you choose the languages from a list and selecting to install them. The languages are then installed for you.
There are several plugins for making your WordPress site multi-lingual. They work in different ways and some might be better suited to your specific needs than others. The WordPress codex describes several methods of making your WordPress site multi-lingual. Here is a look at the methods.
Manage multilingual posts in one post per language
Plugins use language files to perform the translation. Translations are linked together creating a group. Users can switch between the translations. This creates a complex architecture.
Store all language alternatives for each post in the same post
This one uses meta tags to determine the languages and only displays the active language the user is using. You can edit each language side by side. Language tags might have to be installed manually.
Manage translations on the generated page instead of using a post context
The plugin will perform a machine-generated translation on the fly as it is asked by the user. Users can even help with the translation by making suggestions or by making changes manually. This is a great choice because it can translate anything. It doesn’t have to be content that was pre-created or tagged. Unfortunately, machine-translation can be iffy and won’t always provide good results.
Plugins that direct you to external translation services
This works by an automatic translation that is outside of the website. It uses outside services such as Google Translate. These are easy to install and use and any content can be translated. This one also has the issue of automated translation being iffy and not always providing good results.
Plugins that link together separate WordPress network (multisite) installations for each language by pinging back and forth
Separate sites, all in different languages and on the same domain or server, connected together. They will run the same theme and plugin. This method works smoothly, but requires independent management of multiple sites. Due to the multiple site administration I don’t recommend this method as your first option as it becomes time-consuming. It requires server administration experience.