On this page
- Before you begin: Enable modules
- Multilingual nodes
- Language settings of content types
- Language aware nodes without translations
- Node translations
- Multilingual node revisions
- Multilingual menu items
- Multilingual comments
- Multilingual vocabularies and taxonomy terms
- Migration of vocabulary name & description translations
- Background: Drupal 6 vocabulary translation modes
- 'Localized terms' concept
- 'Per language terms' concept
- Other multilingual migrations
- Found a bug? Need support? Want to contribute to migrations?
Upgrading multilingual Drupal 6
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.
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.
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.
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.
'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.

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
You can:
- Log in, click Edit, and edit this page
- Log in, click Discuss, update the Page status value, and suggest an improvement
- Log in and create a Documentation issue with your suggestion