Drupal 8 multilingual tidbits 2: more core modules

Up to date as of October 16th, 2015.

Once you install Drupal 8 in a foreign language, you'll have Language and Interface translation modules enabled with the chosen language configured. Drupal 8 has more core modules handling language related features, yet less requirement for contributed modules to be installed for the most important tasks (on my last count, the 4 modules explained here cover functionality of 20+ modules from Drupal 7 and in much better ways).

Why have multiple modules when a multilingual site just needs all the features? Well, there are also foreign language (not multilingual) sites that we aim to support better and multilingual sites can be very different as well. Also, admittedly there are technological reasons to organize the modules by the features they provide.

In Drupal 8 multilingual is one of the groups of core modules, so you'll find these modules under the main core modules in a neat group.

The Language module serves as the base layer for language support. The role of this module is to provide language configuration, assignment and detection functionality. We'll go into details about the changes around these areas in later tidbits. Suffice to say for now that if you have a multilingual blog with an English only interface but posts in different languages, enabling the Language module will be the only thing you need. It will let you assign languages to content, which is what you need.

Once you need your website interface to speak different languages, you'll need the Interface Translation module. (The combination of Language and Interface translation modules is what was Locale module in Drupal 7, but the two new modules have a lot more useful features and expanded on their reach a great deal in providing you support for your work.)

The Configuration Translation module has the sole purpose to provide a user interface to the existing backend support for configuration translation that is native to Drupal 8. Configuration is treated very differently in Drupal 8 compared to Drupal 7. A unified system exists to ship and update default configuration (similar but in several ways improved to how Features module worked in Drupal 7), so we treat configuration as part of the shipped code as far as language support is concerned.

A single foreign language website for example will typically have the Language and Interface Translation modules enabled with a single language configured (unlike a multilingual blog, where typically multiple languages will be configured but possibly no interface translation or configuration translation needed).

Finally, Drupal core also already ships with a Content Translation module. Although the name is the same, this is far from being the same as the Drupal 7 core module of the same name. The new content translation module works entirely differently, supports all content entities and translates fields. It conveniently makes numerous contributed modules obsolete!

This was just a short intro to the core modules. We'll go into details in later posts.

Issues to work on

  • The reason for so few module groups is that we can only group modules that are single purpose. There is a generic tagging system proposed for modules to be able to be in different "categories" at once, but not a lot of activity on that recently. See https://drupal.org/node/1868444
  • DONE! The issue to track to add the configuration translation feature is http://drupal.org/node/1952394. This would be important for single language foreign language sites for highly increased usability and vital for multilingual sites. Drupal core's issue queue thresholds rules currently make it impossible to get this committed. See http://comm-press.de/en/blog/thresholds-code-freeze-getting-features-dru.... Previously the excessive delays in the base configuration language support landing blocked this issue.
  • DONE! The removal of the legacy content translation module would let us clean up so many things, including the node schema, however there are many dependencies (including an upgrade path): https://drupal.org/node/1952062


Mark123's picture

Thanks for the new blog series!
Regarding "the 4 modules explained here cover functionality of 20+ modules from Drupal 7 and in much better ways": is there a resource that maps drupal 7 ia8n module functionality to drupal 8 modules? (i.e., that shows which d7 modules likely won't be in d8, becaused they're covered by x d8 module.)
If not, that would be something great to include in your last blog of the series, with links to where each is discussed in this blog series (or elsewhere).
Thanks again!

Gábor Hojtsy's picture

Not yet. Not all contrib modules map 100% to core features. I'll try to explain things in the series as we go, and maybe at the end, we can have a summary table. Some things are still moving, so it is not 100% sure what kind of modules would be needed to translate taxonomy terms and menu items for example. So a final list is definitely not possible yet.

Gábor Hojtsy's picture

My article in Drupal Watchdog at http://drupalwatchdog.com/volume-4/issue-1/drupal-babel has a comparison table.

Shady Samir's picture

Very excited about new features. What is the status of Entity (field) translation? Does it have required front-end configuration options? Will the conflict arising from running Entity Translation and Content Translation methods on the same site still be there?

Gábor Hojtsy's picture

Content Translation module is actually a field based translation module derived from the Drupal 7 contrib Entity Translation module. The old Content Translation module that used to be in core is currently still there, but hidden on new installations and will likely be removed before Drupal 8 ships. Our ideal scenario is that you should be able to reproduce all of the old node-copy translation features with the new module by configuring all fields and properties to be translatable, so there would be no need for the node-copy translation. See https://drupal.org/node/1952062.

Add new comment