Multilingual Plugin 🌐

The Multilingual Plugin makes it possible for administrators of a multilingual forum to create a rich and comprehensible environment for all users and guests, even if they don’t speak the default or majority language of the forum.

:page_facing_up: Get the code

:point_right: This plugin is complex. Getting the backend right(ish) has been a journey, which is not yet complete. Please do not use it in production without testing it in a staging environment first.

Overview of features

The Multilingual Plugin extends the existing Discourse locale system to give you:

  1. an administrative interface for all languages used on your forum;

  2. a content language system which lets you and your users filter content on your forum by language;

  3. an integration with the Discourse Translator Plugin, which automates aspects of the content language system;

  4. the ability to translate category names, tags and other semi-static text on your forum;

  5. the ability to disable the use of existing interface languages on your forum;

  6. the ability to add custom interface languages (‘locales’) directly to your forum;

  7. enhanced guest language features including a guest interface language (‘locale’) switcher (as a footer bar or menu); and

  8. optional interface language and content language fields at signup (coming soon).

You can see an example of some of the plugin features by visiting in an incognito window and switching between locales using the footer interface language switcher.

:point_right: Please note

All of the above features work on top of the existing Discourse locale system, and work in conjunction with all features of that system (see the longer explaination of this here).

If you wish to add interface languages (‘locales’) to Discourse, the best way of doing this is following the steps outlined here: How to add a new language - translations - Discourse Meta. You can also add a locale via a plugin, as described here.

The ability to do this via the admin interface in this plugin should only be considered after the existing Discourse-supported methods are exhausted. Any languages added to Discourse via the Discourse-supported methods will automatically be available for all features in this plugin.

Example screenshots

Admin interface

Semi-static text translations (and guest locale switcher)

Content language Translator Plugin integration


This plugin was made possible by the support of the Wikimedia foundation, with particular support from @elapp and @Quim_Gil, who had significant input on the design of the feature-set.

For further discussion on the thinking behind this plugin see: