We live in a time where the market is global, and you no longer need to be bound to a region or country. You can be there for an across-the-globe audience and prove that no distances matter when a business is represented correctly online, especially with the pandemic, when more and more people are browsing the web to find products and services.
But with the global market, you need to expand your website to become more multilingual. This will enable you to send a message to prospective customers in their native language. You are open to the world with multiple languages, and the world is available to you.
With Drupal, you can fully embrace the benefits of a multilingual website, and you can either build one from scratch or enrich your existing one with multilingual features. This article will tell you the top 15 Drupal multilingual modules that you can use in your Drupal 9 website to make it more accessible to the world.
Multilingual, as the word suggests, involves several languages and a multilingual website is one where the audience has the option to translate the language into a language they want. Though English is a common language of communication globally, it is always better to have the options of multiple languages. This will give the audience the comfort of interacting with your website, content, or product in a native language. Once a user is comfortable, it is only natural for them to come back as they have the choice of interacting in a language of their choice.
Top Drupal 9 Multilingual Modules
Here is a list of the top Drupal 9 multilingual modules that you should have on your website.
The module generates multilingual sitemaps for entities, views, and custom links. Contributed entity types like commerce products can be indexed as well. Sitemaps generated by this module adhere to the new Google standard regarding multilingual content by creating hreflang sitemaps and image sitemaps.
- Ability to create any type of sitemap via plugins
- Periodic submission to search engines
- Submission to IndexNow on content changes
- Views and views arguments support
- XSL stylesheets for human visitors
- Performance test script included
Please do not forget to run Drush updb or update.php after every update. If you get an error, run core/rebuild.php before the above.
- Branch 8.x-1.x is no longer supported and there is no upgrade path.
- You can upgrade from any 8.x-2.x version to 8.x-3.x or (preferably) to 4.x.
- Keep in mind, the module APIs change between major releases.
Documentation for Simple XML Sitemap
Drupal 8 & 9
Superfish library 2.x (Sample CSS & SCSS)
Superfish library 1.x (Sample CSS & SCSS)
JQuery 1.6.1 or higher, if you are going to use the jQuery Easing plugin.
- Libraries module
- jQuery Easing plugin (note that the file has to be renamed to jquery.easing.js before being uploaded to sites/all/libraries/easing)
Drupal 8 & 9
- Through Composer: composer require drupal/superfish
- Through your Web browser:
- Download the Superfish library and extract it somewhere like /libraries/superfish (so that the superfish.js will be located at http://example.com/libraries/superfish/superfish.js)
- Download and extract the Superfish module in /modules.
- Go to the Extend section of your Drupal administration back-end and enable "Superfish".
- Go to the "Block layout" page (under Structure) and use any of the "Place block" buttons to create a Superfish block. Use the "Configure" link of the block to configure it according to your needs.
Documentation for Superfish Drop-Down Menus
Hreflang is a simple multilingual module that automatically adds hreflang tags to your pages based on your site's enabled languages and the language switch links provided by core. It can be configured to defer to the Content Translation module on content entity pages. If for some reason you'd like to modify the hreflang tags on a page, you can do so by implementing hook_language_switch_links_alter() or hook_page_attachments_alter() in a site-specific custom module.
Drupal 9 and 8:
The core Content Translation module adds hreflang tags only on content entity pages. This module, on the other hand, adds hreflang tags to all pages, and can be configured to defer to Content Translation module on content entity pages. If for some reason you'd like to modify the hreflang tags on a page, you can do so by implementing hook_language_switch_links_alter() or hook_page_attachments_alter() in a site-specific custom module.
The Drupal Mega Menu module has an easy-to-use backend config and unlimited menu and sub-menu expansion. It can add and remove multiple columns and blocks and add exclusive classes, icons, and item captions. It also allows you to style the selected submenu with an extra CSS class and move a list of menu items to another column.
Documentation for Superfish Drop-Down Menus
The Dropdown language module, rather than showing an unordered list of links, provides a block using the Drop button element to switch site language. The block will 'appear' when more than one language is active, and it will display the current language at the top of the list. You can display language link titles by name, language ID, native name, or custom labels. This Drupal 9 multilingual module also offers the option to hide links to untranslated Entities and keep block render in place if no other translation path is available.
- Language (core)
- Block (core)
- Node (core)
Nodes (Content Entities) are the base of determining translation children: Views, Panels, Custom Routes have no ability to 'find a translation of'.
- /admin/config/regional/language — General Language Setup (core)
This Drupal 9 module allows you to choose different layouts and blocks for multiple languages on content items that override Layout Builder settings for their entity type. The sections are stored as multi-valued fields on Layout Builder Overrides, and different layouts translations are stored as translations of these fields. The module makes the layout section field translatable when enabling layout builder on an entity display. On installation, existing layout section fields are also made translatable.
After install, go to admin/config/regional/content-language to enable translation on the Layout fields that are available.
If you want each translation to have the same layouts and sections see the Layout Builder Symmetric Translations module but the 2 modules will not work together on 1 site.
The Language Switcher Extended module provides additional processors for the language switcher block links. The module is based on the work of Karol Haltenberger, Leon Kessler, and Stathis Papadopoulos, and Ramsalt Lab helped with the initial development and maintenance of this multilingual Drupal 9 module.
- Link all language switcher items to their corresponding language frontpage.
- Hide language switcher items, if there is no translation for the current entity
- Link language switcher items to the frontpage, if there is no translation for the current entity
- Show unlinked language item, if there is no translation for the current entity
- Show the language code instead of language name
- Hide the current language.
- Block (Drupal core)
- Language (Drupal core)
8. CKEditor BiDi Buttons
This multilingual module integrates the CKEditor BiDi plugin with CKEditor for Drupal 9. This plugin provides the bi-directional text flow buttons, RTL and LTR. This makes it possible to change the text direction for HTML block-level elements like paragraphs and lists. It is essential for authoring content in written Right to Left languages, like those with Arabic and Hebrew writing systems.
- Download this module and place it in "modules" directory.
- Enable the module in Drupal Admin.
- Go to "Text formats and editors" in admin section of your Drupal site /admin/config/content/formats
- Click the "Configure" button of a text format that already has "CKEditor" selected as its "Text Editor".
- While on that text format configuration page, activate BiDi buttons by dragging them into the active buttons area of the editor toolbar.
This module helps site builders to filter menus by language with a few clicks easily, and it provides developers with a custom service to manipulate menus. You can add custom icons to menu items and filter menu items by current language. You have to select which menus must be filtered by language and which should have icons. Menu items will be hidden if not translated into the current language OR if they point to an entity that does not have a translation for the current language.
How to install:
- composer require drupal/menu_manipulator
- drush en menu_manipulator -y
How to use:
Go to Admin > Configuration > User Interface.
Documentation Menu Manipulator
The CookiePro module automatically inserts a cookie banner & preference center script to your website. Simply copy and paste the main script tag provided in your CookiePro account into the module script box and leverage built-in templates with multilingual support.
How it Works:
- Scan your website and review your cookies categories
- Style and configure your banner and preference center
- Block cookies using a tag manager and/or JS Rewrite
- Copy and paste CookiePro script into Drupal module
- Save the configuration to publish the cookie banner
- Automatically scan and categorize cookies on your website
- Customize your cookie banner and preview before publishing
- Configure consent models by geolocation (Show only in EU)
- Respect prior consent and Do Not Track browser settings
- Granular preferences center and ability to withdraw consent
- Complete records of consent to demonstrate compliance
- Generate and maintain an always up-to-date cookie notice
- Audit website for changes through scheduled website scans
- View previously published versions saved in a script archive
- Leverage built-in templates with multilingual support (50+)
This module allows you to publish CookiePro’s cookie banner and preference center on your Drupal website. Use of this module does not, by itself, ensure compliance with legal requirements related to cookies.
11. Language Access
This multilingual module restricts user access to local languages using permission which is useful for sites where multilingual content has not been fully prepared yet. Insign, Wunder, and iO are the supporting organizations for this module.
This multilingual Drupal 9 module creates a Language Field and provides a Field Formatter with several options. Use this module if you need more languages than the enabled languages but do not need the translations.
13. Varbase Core
This is the core Varbase feature and provides core components required by other features. This includes languages and translation support. This module is best used with Varbase distribution and can be installed with any Drupal 9 site. Vardot maintains this module.
This multilingual module is a Google Translate translator plugin for the Translation Management Tools (TMGMT) project. It allows the use of machine translation provided by Google to translate content. This official integration module for Google Translate is maintained in partnership with MD Systems and requires registration on Google.com.
- Drupal 9 ready
- Fast automated translation of content using Google Translate Service
- Translate one or multiple nodes by a few simple mouse clicks
- Use advanced translation jobs management tool to submit and review translations
- The project of course also implicitly supports all the features which are provided by TMGMT like a feature-rich review process, being able to translate different sources and more.
Depends on Translation Management Tools. Registration on http://www.google.com is required to use this module.
Content Language Access Module restricts access to only contents with language (except neutral language) equal to the actual Drupal language being accessed or others that were previously configured in the admin page. It is not intended to be used for access control for administrative users. This module helps when you have content that needs to have access restrictions by Drupal language. This module detects the content language based on the settings defined on Config.
These are some of the most used Drupal multilingual modules for the multilingual category. Which one of these are you currently using?