Upgrading multilingual Drupal 6

Last updated on
28 November 2022

Where the images refer to Drupal 8, it also applies to Drupal 8+.

Before you begin: Enable modules

Drupal has an extensive multilingual support in Core. As explained in the Drupal Multilingual Guide, the multilingual capabilities are provided by the following core modules:

  • Language
  • Interface Translation
  • Content Translation
  • Configuration Translation.

Make sure that you have all these core modules enabled on your new Drupal site before running upgrade.

Multilingual nodes

The contributed i18n module provides multilingual capabilities for nodes in Drupal 6. Similar capabilities are in Drupal core.

Language settings of content types

  • Migrating content type language settings from Drupal 6 to Drupal 8 or higher is supported.

Language aware nodes without translations

  • Nodes can have a language in Drupal 6 without translations. 
  • The result in Drupal 8+ will be conceptually the same as in Drupal 6. There will be two separate node entities and the language of each node will be migrated automatically.
  • The figure below illustrates this migration.  

Migration of language aware Drupal 6 nodes

Node translations

The translation concept in Drupal 6 and Drupal 8+ is fundamentally different.

In Drupal 6 we have two nodes, one for English and one for Finnish. Both language versions are separate node entities with their own node IDs. The nodes are associated as translations of each other.

The Drupal 8 or higher translation concept is fundamentally different. There is only one node entity which is 'shared' between all language versions of the node and the translations are done on field level.

The figure below illustrates the migration. The content of both nodes (English and Finnish) is migrated to one and the same node so that there are language versions on field level. Redirects from node/2 to node/1 will be automatically created during the migration. 

Migration of Drupal 6 node translations

Multilingual node revisions

The migration for translations of node revisions is available as of Drupal 8.9.x.

Multilingual menu items

The contributed i18n module has a Menu translation sub-module which provides the Drupal 6 capability to

  • Define language to menu items
  • Translate the menu items using the string translation user interface. 

Similar capabilities are in Drupal 8+ core. Migrating the menu item languages and their translations from Drupal 6 is supported.

Multilingual comments

Multilingual vocabularies and taxonomy terms

The contributed i18n module has a Taxonomy translation sub-module which provides multilingual capabilities to vocabularies and taxonomy terms in Drupal 6. Similar capabilities are in Drupal 8 or higher core.

Migration of vocabulary name & description translations

  • Migrating the translations of vocabulary name and description are supported

Background: Drupal 6 vocabulary translation modes

Drupal 6 supports different multilingual concepts for vocabularies as illustrated in the figure below.

D6 vocabulary multilingual settings

The 'localized terms' and 'per language terms' concepts are explained below. The 'Language' of the vocabulary is only applicable when the vocabulary has a fixed language ('set language to vocabulary' setting). In the fixed language concept all terms of the vocabulary get this language.

'Localized terms' concept

The Drupal 6 'localized terms' concept is illustrated in the figure below.

  • We have two node entities, one in English (nid 1) and one in Finnish (nid 2). These nodes are associated as translations of each other. 
  • We have one taxonomy term entity (tid 1). Both Finnish and English nodes are pointing to this same term.
  • The term title and description can be translated using the i18n / String translation module.

Drupal 8 or higher has an equivalent for the 'localized terms' concept.

  • As explained above, the node translations are migrated so that we have only one node for both language versions.
  • We have one taxonomy term entity just like we had in Drupal 6.
  • Both Finnish and English language versions of the node are pointing to the same term.

Migration of Drupal 6 'localized terms' concept

'Per language terms' concept

The D6 'Per language terms' concept is illustrated in the figure below.

  • We have two nodes, one in English and one in Finnish. These may be associated as translations of each other.
  • We have separate taxonomy term entities, one for English and one for Finnish. These have their own term IDs. The terms may be associated as translations of each other.

 The closest Drupal 8+ equivalent to the 'Per language terms' concept is illustrated in the figure below.

  • As explained above, the node translations are migrated to so that we have only one node but there are translatable fields.
  • Here the field for taxonomy term reference is set as translatable so that the English version of the node can point to the English term (term/1) and the Finnish version of the node can point to the Finnish term term/2).
  • Note that in Drupal 8+ the two terms cannot be associated as translations of each other. 

Drupal 6 'Per langauge terms' concept

Other multilingual migrations

Other supported migrations:

  • Migrating enabled languages.
  • Migrating language negotiation settings.
  • Migrating block translations.

Found a bug? Need support? Want to contribute to migrations?

If you found a bug related to the multilingual migrations, report them as child issues of the multilingual meta issue.

If you need support, join the active #migration channel at Drupal Slack or post your question to Drupal Stack Exchange.

If you want to contribute on the migration issues, you are warmly welcome! Check out the Contributing to Migrate page.

Help improve this page

Page status: No known problems

You can: