Webdrips Drupal 8 Demo Site Image Shows Multilingual Capability is now Built into Drupal 8
2019-02-14

Introducing Drupal 8 Multilingual Capabilities

Having a multilingual website means all content, from what's visible to guests, to the administration interface, can be translated into other languages. Drupal content translations are insanely easy to configure and execute in Drupal 8 compared to prior versions of Drupal.

If you're upgrading (migrating) from an older version of Drupal, the translations can now be migrated in a much simpler manner in most cases.

As with many other features of Drupal 8, the ability to create multilingual sites out-of-box was considered so important, it had its own core initiative. Having built-in multilingual capabilities means superior ease of use, and every entity has the same translation workflow

Before we dive deeper into translations, it's important to understand in Drupal 8, just about everything that makes up the underlying architecture is considered an “entity”. This is a huge break from prior versions of Drupal as entities were broken up into distinct categories, such as node (page), field collection, and so on. Also, things like blocks (e.g. the header and footer of any site) were not considered entities.

Why is this important? All entities in Drupal 8 may be translated using a simple UI and the same steps. You can even configure a workflow to approve translations in every language before they become visible to your guests.

Test-drive this Feature on this Demo Site

The Four Core Drupal 8 Multilingual Modules

What is a Module? Drupal Modules provide plug-and-play features and functionality. Typically you can enable and configure them to make their feature and/or function available. Drupal has core modules that "ship" with Drupal, and nearly 7,000 contributed modules available for Drupal 8. Contributed modules are modules added and maintained by the Drupal community.

Drupal 8 "ships" with four built-in multilingual modules as follows:

  • Language module: allows you to add and configure the languages you wish to translate your content into.
  • Content Translation module: provides a User Interface (UI) to translate any Drupal site entity (page, block, menu, tag, etc.) into any enabled language.
  • Interface Translation and Configuration Translation modules: provides the ability to translates the built-in UI that makes up the administrator interface and  the authoring environment. Many translations have already been performed and can be downloaded on-the-fly.

If you're only concerned with translating the content you create, only the first two modules are required, and the later two haven't (yet) been enabled on this Drupal 8 demo website. 

We'll cover these modules in more detail below.

Configuring the Drupal 8 Language Module

Drupal 8 makes it incredibly simple to add and manage languages to translate your content into. This Drupal 8 Demo site has the following languages (so far):

  1. English
  2. Chinese (Traditional)
  3. Spanish
  4. Portuguese (Brazil)
  5. Italian
Webdrips Drupal 8 Demo Multilingual Module Language Listing Table
Drupal 8 Multilingual Language Module Language List Table

 

The table allows you to set the default site language and edit each language.

Webdrips Drupal 8 Demo Multilingual Language Module Edit Language Screen
Drupal 8 Demo Site Multilingual Language Module Edit Language Screen

 

As you can see, you can set our own name for the language, and the direction the text is to be presented in (left to right or vice-versa). 

You can add as many languages as you like, with many built in to choose from, and a "Custom language" option for any language not listed.

Webdrips Drupal 8 Demo Multilingual Language Module Add Language Screen
Drupal 8 Demo Site Multilingual Language Module Add Language Screen

 

Configuring the Drupal 8 Content Translation Module

The first thing that needs to be done with the content translation module is to select each entity type you wish to translate.

For this Drupal 8 Demo site, we wanted to allow translation of the following entity types:

  1. Content (pages)
  2. Custom blocks
  3. Custom menu links
  4. Taxonomy terms
  5. Users

 

Webdrips Drupal 8 Demo Multilingual Content Translation Module Configuration Screen to Select Entities to be Translated
Drupal 8 Demo Site Multilingual Content Translation Module Configuration Screen to Select Entities to be Translated

 

As you add more plugin modules to your website, more items become translatable (if supported). 

For every entity subtype within a given entity type, you then need to configure exactly what fields get translated. For example, content may include news, events, etc. If  you wanted to translate all of your content types, you'd need to configure all of them.

Webdrips Drupal 8 Demo Multilingual Content Translation Module Configuration per Entity Type Section Example
 Drupal 8 Demo Site Multilingual Content Translation Module Configuration per Entity Type Section Example for News

 

As you can see, both built-in fields and fields made available through add-on modules can be translated. 

Now let's have a look at how a page is translated. First we add the page in the default language and save it. Then we click the Translate tab at the top, and are presented with a list of enabled languages (configured above) to translate a page into.

Webdrips Drupal 8 Demo Site Multilingual Content Translation Module Translate Page Content Tab
Drupal 8 Demo Site Multilingual Content Translation Module Translate Page Content Tab

 

We'll click Add for Spanish, and we're presented with a form to provide the Spanish translation, which is exactly the same as the page add/edit form less any common fields you didn't want translated.

Drupal 8 Demo Site Multilingual Content Translation Module Page Translation Form
Drupal 8 Demo Site Multilingual Content Translation Module Page Translation Form

 

Although we're showing a page translation, the exact same translation flow works for all translatable entities. It's just that simple!

More on the Drupal 8 Interface Translation Module

The Interface Translation module automatically downloads translations for parts of the Drupal front and back end interface you see after logging in. If you don't agree with the translation provided, you can override it. If you added a custom language, you will be responsible for all of the translations.

Here's a helpful hint for translating your default language: enable this module, and you can actually provide overrides for built-in interface items. For example, change you "Log in" button to "Sign in". Neat!

Any customizations you make to one site can be exported and used on another site. 

A UI is provided to help you manage the translation of these items.

Conclusion

If you have had the unfortunate experience of configuring or just using the content translation in prior versions of Drupal, you will be in for a very pleasant surprise at how easy it is now to both configure and add translations.

If you have a Drupal 8 site now, and wish to add multilingual capability, we'd be happy to help. If you have an older version of Drupal, you'll want to test drive this feature on this Drupal 8 demo site. 

Test-drive this Feature on this Demo Site

Image
Webdrips Drupal 8 Demo Site Image Shows Multilingual Capability is now Built into Drupal 8