Make a multi-language forum

We implemented a multi-lingual forum for our community. It currently supports 6 languages. We have seriously considered moving to Discourse, and I have explained to @codinghorror that we would pay for this feature. Based on some of the off-topic uses cases in this thread, it looks like others have the same need.

Many of our most active contributors use our forums in multiple languages. But most of our most informed users only speak English. We want to encourage participation in the non-English forums by users who also speak English in order increase the level of informed content. When someone asks a question in the non-English forums, we want to encourage multi-lingual users to translate the answer from the English forum into that language.

So users should have a single account across all the languages with a single score for reputation. Accumulation to badges should be based on participation in topics in any language. We want a single interface for watched threads and direct messages. The result is that people are recognized for their work translating answers between languages, and users who only speak one language benefit.

We used to have multiple installs of phpBB. Not only was it a maintenance nightmare, it didn’t encourage quality discourse the way our current system does.

We architected our solution in Drupal as follows:

  • Allow the user to select the language to see in the UI. Discourse can do this now.
  • Allow the user to select languages in which they want to see content.
  • Filter the forums that are displayed based on their language setting. In Discourse this would probably be a special tag.
  • When content is posted in a forum, it inherits the language of that forum.
  • Moderators can be assigned for specific languages. In practice, I think this turned out to be an anti-feature.

To implement this in Discourse, I think you would:

  • Create a special type of tag called Language, and require one per post.
  • Modify the user profile to track “languages undestood”.
  • Filter the UI based on the “languages understood” and the Language tags.

When broken down in this manner, I think it can be implemented in a way that doesn’t disrupt the rest of the system.

My team is evaluating deploying Discourse in 2015, and could either implement this, or pay to have it implemented. I think this feature is the last obstacle to my being able to commit the team to move forward with Discourse. We currently have no experience with developing on Discourse or its component technologies, so if someone experienced wants us to sponsor their work on this feature please contact me with a proposal.

Can we add the “Feature” tag to this topic?


Our community is most base on non-english speakers (almost italian) and this feature can do the job very well. How can I contribute to this?

Anyone interested? The only way is use a category named “Italian”, isn’it?

The second I think. I quote every word :wink:


In my opinion and in practice, a multi-language forum works perfectly well if the software supports it. I have a multi-language forum running on Drupal, and the language part of it is handled extremely well by Drupal. (I wish the same could be said of the forum functionality…) Drupal uses “taxonomy” terms for the forum categories, and it allows the same term numbers to be used across all languages, and only the name and description of the term needs to be translated. Then, based on the subdomain (,, etc.) it switches the site language and filters the terms (categories) and nodes (posts) to only show the ones in the appropriate language. I have moderators for each language, and it works like a charm.


I think the work on tagging will be very useful in this effort.


Can we expand a bit? How can I use category and subcategory for not be “a bit weird”
Any experience or example?

I’m currently giving a try with the tag plugins so we can keep normal categories but add tag option to specify the language used.
In addition it allows using multiple langage in the same topic, so people can translate their own posts…

I do not know if it will work or not …

example with country flags:

I like what you have going on at the poppy-project. Interesting side effect using chrome, it recognized that the post was in French and offered to translate. That worked perfectly and form then on… the rest of all of the pages automatically were translated until I manually clicked the translate option to get it to show the original again. I also think it may have been translating some of the English posts (moved around some of the text). But overall it gave me the sense that the entire community could seamlessly participate in the conversation.

Do you have the per-user-locale enabled on your site?


Yes but very few people goes in the setting.

Maybe a complementary option would be to add a field at the sign up to let user specify its preferred language.


Hi, I am interested in how this is going.

It seems to me the most obvious usage is to

  • Have a tag for the languages
  • Keep the categories the same
  • Use “reply as linked” to create English version of a question not yet answered in English (requires a translator)
  • Use a link in the text to refer to and translate an already answered question (requires a translator)

It strikes me that this is related to This topic about marking posts as SOLVED because the translator should not have to search too much, only translate.

I would be interested to hammer out a process for this (here is an example of a process) which can be recycled. I could make a diagram :smiley:

1 Like

For me the use of tags allows having multiple language so you can directly have multiple content in the same topic.

sorry I posted in wrong place, moved it now

We are working on something like this here: It is just getting started. There is not much to see yet.

We are going to try to have Dari (Persian) and English of the same forum. My hope is that we can create a ‘translation’ tag, and use that in direct replies to posts. The translations will be set as wikis to be edited by the community.

We have some issues to work out with mixing left-to-right and right-to-left layouts in the same forum.


What I’d love to see is facebook-like inline translation of posts, so users can choose their locale (ideally at signup) and then translate in line when they see something in another language that they want translated.

Something like this was built but doesn’t seem to be working/active.

1 Like

Seems we have some very similar ideas on this, especially after the advent of tags. I wrote this in a separate topic but I might as well close that and repost it here for continuity.

Continuing the discussion from Early preview of the new tagging plugin:

I just had a thought. What if a (special) tag could be set as a site-wide filter, invisible as anything other than a setting. The setting being your standard language selection menu in a corner somewhere:

Here’s how you would use tags on a multi-lingual site

Imagine a website with two languages: English and French.

The site’s default language is English. As a result, by default, all new topics are tagged lang:en, and you can only see topics tagged lang:en. This isn’t a tag you can find and select from the taglist yourself.

If you change the site language to French however, two things happen:

  • Any new topic you make while the French language setting is turned on will be tagged with lang:fr.
  • You will only be able to see topics tagged lang:fr

Note: This is dependent on tags being possible to use in conjunction with categories as an added filter as opposed to the one-or-the-other situation we have right now.

That’s it. No need to make new categories for each new language, e.g. like on (provided category names can be translated).

I think this could be a very powerful complement to the existing work that came out of the “Multiple languages on single discourse site” debate.


With requirements like these in mind…

… the only other feasible solution I can imagine would be if Discourse made it possible for multisite instances to communicate with one another, i.e. very much like how StackExchange works.

What if all languages were together on the same page, but the user could expand and collapse posts based on their language tag? So if a user selected ‘German’ they would see full posts that were in German or had been translated to German. All other posts would be displayed as titles.

There could also be a tag for posts that are in need of translation.

It would be nice to have the option to create translations through different methods. Machine translation of Persian and Arabic doesn’t seem to be very good


This sounds really ideal to me. It would be perfect for us, and would allow the between-langs translation. Is there any way this would get built?

1 Like

As someone who was involved in that earlier debate, I am really excited to see this level of UX sophistication being applied to this concept.
I love the idea of language tags to identify the language of the post, but I think the default behavior of such a site should be multi-lingual. All posts are displayed for all users by default, and users could choose to mute out posts of one language or another. But it wouldn’t make sense to mute out a langauge in my context (montreal) because people want to be able to converse in both languages interchangably.
The question of a translation feature - automatic or contributed - i think is separate but related. The best UX for post translation i’ve seen is Facebook’s: a small ‘see translation’ link underneath a post that displays an automatic translation when clicked. I don’t know if that would make sense for a multi-lingual Discourse.