In this article I show you how to create a multilingual website using WordPress Multisite. Although many of the topics discussed in this guide will also help you in case you chose a single WordPress installation.
By default WordPress don’t support bilingual or multilingual versions. So if you want to create a WordPress site with two or more languages you have two basic options:
- Install a standalone WordPress environment and a multilingual plugin such as WPML (premium) or Polylang (free).
- Install WordPress Multisite and a multilingual network plugin such as Multisite Language Switcher (free), Zanto (free) or Multilingual Press Pro (Premium).
Which is the best option to create a multilanguage WordPress site? It depends on many factors. There is no single answer.
In any case if you are creating a large website and you are an advanced user I recommend using WordPress Multisite for your multilingual project. If you’re a WordPress beginner user or if you have a small or medium site I recommend using a single WordPress installation with WPML. In other cases it will depend on each project and user.
For more information about the best solution (single or multisite) please read this article: How To Make A Multilingual WordPress Site: best translation plugins
In this guide I show you how to make a WordPress site in two o more languages using WordPress Multisite. Although many of the topics discussed in this article will also help you in case you chose a WordPress single installation.
1. Setting up a multilingual site using WordPress Multisite
1.1. Installing WordPress Multisite
You have two options to create a network in WordPress:
- Existing WordPress site: Install WordPress Multisite in your current WordPress installation following these instructions: http://codex.wordpress.org/Create_A_Network
- New WordPress site. The easiest way to install WordPress Multisite is to do so via the Softaculous installer in cPanel. To enable Multisite, you need to check the Enable Multisite option on the WordPress installation page. Once the installation is completed, Multisite will be enabled in your WordPress.
1.2. Domain, sub-domain and sub-directory
You can choose between sub-domain and sub-directory when installing WordPress Multisite. This website is using sub-domains:
Note: You may need to set up a wildcard subdomain, and this can be done within your cPanel account. A wildcard DNS is specified by using the * symbol to create a record for the *.example.com (Configuring Wildcard Subdomains).
Also, you can use subdirectories. Examples:
- http://wplang.org (English)
- http://wplang.org/es (Spanish)
- http://wplang.org/de (German)
Note: if WordPress is installed in the root of your domain, you may receive a warning that your installation must use sub-domains. This will happen if your WordPress website is older than one month.
A final option is using domains. Examples:
- http://wplang.org (English)
- http://wplang.es (Spanish)
- http://wplang.de (German)
In WordPress Multisite is possible to achieve these kinds of URL for each language by using the popular Domain Mapping plugin. This plugin allows users of a WordPress Multisite network to map their website to another domain.
1.3. WordPress core language files: po and mo files
(IMPORTANT UPDATE 18/12/2014: Since WordPress 4.1 you don’t need to upload .po and .mo files. Just go to Settings > General > Site Language, and install new languages)
If you installed WordPress in English, you’ll need to create the languages folder inside wp-content directory and upload .PO and .MO WordPress core language files.
The .PO file includes the original texts and the translations in two columns. WordPress doesn’t use it. The .MO file includes the exact same contents as PO file. The two files differ in their format. While a PO file is easy for humans to read, MO files are compiled and are easy for computers to read. WordPress gets translations from .MO files.
There are WordPress core language files and theme/plugins language files (see paragraph 2)
For example, in Wplang.org I’ve uploaded Spanish and German language files. You can download these files from: http://i18n.svn.wordpress.org/. You have to upload four different files (po and mo): text strings in WordPress dashboard, text strings in network dashboard, name of continents and cities and text strings in WordPress front and backend. Examples:
- Spanish files
- German files
Note on translations: You might want to use a less formal language for your website or maybe you want to customize the text. In this case you need to use Poedit software to modify translations
1.4. Setup each network site: General settings
Once you’ve uploaded the core language files, you can setup localization options on each site of the network.
Go to Settings > General to setup each network site:
- Site Title
- Tagline in the appropriate language
- Timezone. From the dropdown menu, choose a city in the same timezone as you. For example, under America, select New York if you reside in the Eastern of the United States.
- Date Format. The format in which to display dates on your site.
- Time Format. The format in which to display times on your site. More info: Documentation on date and time formatting (http://codex.wordpress.org/Formatting_Date_and_Time)
- Week starts on. Select your preferred start date for WordPress calendars from the drop-down menu.
- Site Language. It’s the language in which you write your website. Each site in WordPress Multisite has its own language setting.
2. Install a multilingual theme (and multilanguage plugins)
If you want to make a multilingual WordPress site, I recommend you to look for a theme translated into other languages or at least a multilingual ready theme (I mean ready to be translated into other languages with Poedit). This also applies to plugins
2.1. Multilingual themes
Free multilingual themes
You can find free translation ready themes in WordPress.org:
Premium multilingual themes
- StudioPress. You can translate Genesis Framework automatically into one of the available languages. No need to translate and upload .MO and .PO files. You only need to install Genesis Translations Plugin. Genesis Framework is translated into many languages: Spanish, French, German, Russian, Dutch, Portuguese, Romanian, etc.
- ThemeForest. In this link http://themeforest.net/tags/multilingual, you can find all multilingual themes. Note that some WordPress themes are multilingual and ready to be translated with WPML or Poedit, but also you can find themes with a complete solution (no need for any translations plugins – Example: Amplus).
- Elegant Themes. All themes have been localized for easy translation. Included with each theme are .MO and .PO files that can be used to translate the theme. They have also begun adding some translations to the themes for certain languages. At the time being, all themes come pre-translated to English, Russian and German. More information: http://www.elegantthemes.com/features/localization.html.
- WooThemes come packaged with a language file for easy WordPress theme translations into your language. Also, WooCommerce comes localization ready.
- DiyThemes (Thesis). How to Translate Thesis (or a skin) into Other Languages:
WordPress theme compatibility with Multisite
In theory, any theme work on multisite, but in practice not all work perfectly in a multisite installation.
More info about theme compatibility with Multisite
- Diythemes: http://diythemes.com/thesis/rtfm/troubleshooting/multisite/
2.2. Multilanguage plugins
I also recommend you look for multilingual plugins translated into other languages or, at the very least, browse multilingual ready plugins.
The WordPress plugin repository doesn’t allow you to search for plugins that have been localized, so if you download a free plugin it’s best to check the plugin’s features list to see if it is translation ready or contact the developer for more information.
Most free popular plugins are multilingual ready. Also, most premium plugins are multilingual ready, but not all.
For example, if you want to make a multilingual contact form, Contact Form 7 plugin is an excellent option. You can create contact forms in two o more languages very easily. Click the Add new link, and select the language from the drop-down menu (More info: How to create multilingual contact forms for WordPress).
WordPress plugins compatibility with multisite
While there are hundred and thousand of WordPress plugins many of these may have compatibility issues with Multisites or the theme you are using. Check the plugin’s compatibility information before installing.
3. Install a multilingual network plugin: synchronizing and cloning contents
Now that you’ve configured your multilingual website with WordPress Multisite, you can start making your website and creating content in your language.
In this website the original contents have been created in English and in the primary domain http://wplang.org.
3.1. Synchronizing the content (or not)
Once you’ve designed the original website, you can start translating content into other languages. You have two options:
- If you do not need to synchronize the contents of each language, simply put a language switcher at the top of your website, so the user will be redirected to the home page when switching to another language.
- You may want to link the translated content in different languages (post, pages, taxonomies, etc) to avoid being redirected to the homepage when switching from one language to another. There are three plugins that allow you to synchronize contents in each language. Let’s review these plugins.
3.2. Multilingual network plugins
- Multisite Language Switcher. A simple and easy to use plugin to manage multilingual content in a multisite WordPress installation. This plugin enables you to manage translations of posts, pages, custom post types, categories, tags and custom taxonomies. You can use a widget to link to all sites with a language switcher. This website is using Multisite Language Switcher Plugin.
- Zanto. This plugin enables you to convert WordPress websites in a multisite installation into translations of each other. It provides a language switcher and keeps track of what has been translated and what has not. It provides an intuitive interface that allows you to manage translations.
- Multilingual Press (free version). With this plugin you can connect multiple sites as language alternatives and use a customizable widget to link to all sites.
- Zanto. This plugin comes with paid add-ons that provide additional features: Translation manager ($54), Menu switcher ($9) and Better links ($19).
- Multilingual Press Pro. The pro-version offers many additional features: support for custom post types, redirection to the user’s preferred language version, the ability to edit all translations from the original post editor without the need to switch sites, duplicate sites, etc. Pro Version costs $75 (1 domain), $95 (5 domains) and $190 (10 domains). Annual renewal costs $45, $55 and $110, respectively.
More information about this plugin in this review: Multilingual Press Review: Create networks with multiple languages.
3.3. Cloning sites
If you have created a whole website in English, and you need to create the German or the Spanish version, you can completely duplicate the English version and replace the English content with German or Spanish content. This prevents you from having to redo theme customization, widgets, custom menus, links, images, etc.
- WordPress Importer. Go to Tools > Import/Export. It will ask you to install a plugin if it is not already installed.
- Blog copier. Enables users to copy existing sub-blogs to new sub-blogs. Note that it only allows you to select example.com/es (or es.example.com) as source but not example.com.
- NS Cloner – Site Copier. This plugin clone existing sites in a multisite network to a completely new site.
- Another interesting option is ThreeWP Broadcast that broadcast posts to other blogs in the network. Custom post types, attachments and taxonomies are supported. It’s a network plugin for PHP v5.4+.
- Mutilingual Press Pro. If you buy the pro-version of this plugin you’ll be able to duplicate sites.
4. A note on translation quality and translation management
4.1. Automatic versus human translation
Before starting translation is very important to establish the kind of translation you want to perform: automatic or human. Make sure you chose the right option for the amount of time spent and content quality you want for your blog or website.
Let’s look at the different options from worst to best:
- Automatic translation. First, and worst, is using automatic Google translator (or any other automatic translator). Translations often don’t make sense and search engines could consider them as spam. On the other hand it’s the cheapest option. You don’t need to perform the costly task of translating your blog or hire a translator.
- Human translation:
- Cheap translation. You can go to Fiverr (or similar webpages) and hire a cheap translator. The work will be done by a translator but the quality of the translation may not be the best.
- Professional translation. A high quality translator can demand a price for their services, but I think is worth if you foresee serious growth in the different language versions.
- Professional translation + Proofreading. If you want to avoid potential errors in translations is always advisable to perform a proofreading.
4.2. Translation management
It is always advisable that the translation is carried out by a professional translator familiar with WordPress that can do their work from the WordPress admin panel. This way you avoid having to copy and paste text into Word.
Unlike other CMS, WordPress does not have the role of translator. One solution is to create a user with the role of editor or administrator (if you trust your translator). You can also use User Role Editor Plugin to manage users.
Another option is using Zanto Translation Manager. This way you can turn any user into a translator or reviewer. A translator is provided a special dashboard. The XLIFF feature enables you to export posts, pages or any custom post types (with its taxonomies, comments and post meta) to XLIFF. This file can be sent to any translation company or you can use your favorite CAT tool to do translations. When translations is complete, the XLIFF can be imported back.
5. Translate content into other languages
5.1. Post, pages and custom post types
Posts (or articles), pages (often used to present “static” information) and custom post types (portfolios, projects, libraries, etc) are the main contents to be translated. Each of them contains a number of elements that must be translated:
- Slug. Slugs are usually a URL friendly version of the post title, but a slug can be anything you like. Slugs must be translated.
- Content. You must translate not only text but also images, attachments, etc. Don’t forget to change internal links in each language.
- Don’t forget to translate text images (you’ll need to edit the image before) and image title, alt text, caption and image description.
- Don’t forget to translate attachments (PDF files for example)
- Don’t forget to translate Error 404 page
- Don’t forget to translate comments if applicable
Taxonomies allows classification of things. In WordPress, there are two taxonomies: categories and tags. It’s important to translate categories and tags. Often these elements are not translated in many websites.
Each category (and tag) contains a number of elements that must be translated:
- Category name
- Category slug
- Category description
- Category archive settings: headline and intro text
WordPress Widgets add content to your Sidebars. Elements for translation:
- Widget title
- Widget content
- Widget button
Example (Jetpack Blog Subscriptions):
5.4. Author bio
Authors are shared throughout WordPress multisite, so the bio is the same on each site. The best option to translate the author bio is using a widget. In this website I’m using Genesis User Profile Widget (after entry).
Note. There is a plugin, called Individual Multisite Author, that enables individual author descriptions for each single website in a multisite network. So you can use it to translate the author description.
Elements for translation:
- Navigation label. This is what your visitors will see when they visit your site
- Title Attribute. The text displayed when a user’s mouse hovers over a menu item
5.6. Contact forms
When translating contact forms must take into account various texts:
- Visible texts
- Validation messages
- Error messages
- Button text
Example (I’m using Contact Form 7):
Elements for translation:
- Slider text
- Links to pages or posts
5.8. SEO options
SEO Elements for translation:
- Homepage: Title and meta description
- All posts (and custom post types). Title and meta description
- All pages. Title and meta description
- Categories (and tags). Title and description
5.9. Social networks
Consider that there are other countries where different social networks predominate (For example, Vk.com in Russia)
6. Search engines and webmasters tools: Geographic target
Finally, once the website has been translated, you should enlist the website on major search engines and set your geographic target in webmaster tools.
Google is the world’s largest search engine but note that in some countries there are other major search engines: Yandex in Russia or Baidu in China, for example.
You can use Google XML sitemaps plugin (100% Multisite compatible) to generate and send a sitemap to search engines.
Most search engines returns the most relevant sites in response to a user query. For that reason, the results a search engine shows to a user in the United States can vary from the results returned to a user in the United Kingdom.
If your site has a generic top-level domain (.com, .org, .net, etc), and targets users in a particular geographic location, you can provide information to help search engines determine how your site appears in the search results..
If your site has a country-coded top-level domain (.es, .de, .ru, etc) it is already associated with a geographic region. In this case, you won’t be able to specify a geographic location.
In Google Webmasters tools you can set a country target from the International Targeting section (Country tab), check the Geographic target checkbox and choose your country target. If you don’t want your site associated with any location, you can select “Unlisted” (for example in your english version).
As you have seen, creating a multilingual website with WordPress Multisite is not a simple process. However, the existence of multilingual network plugins and plugins to clone entire websites makes things much easier.
In any case there are many aspects to consider when creating a multilingual website: sub-domain or sub-directory, the setup of each network site, translation quality, translation management, content synchronization, content translation, geographic target in webmasters tools , etc.
I hope this guide will help you create your multilingual WordPress website