Use categories or tags to structure a multilingual community

Nothing springs to mind but we’re seeing more and more multilingual communities so if that is going to simplify that particular use case then I think it’s a legit ask.


@HAWK I also support this feature. I can see so many uses for this in addition to requiring language tags. For example, we currently have a tag group called project management with tags #idea, #scoping, #ready, #in-progress, #celebrating, #evaluating, #done. It would be incredible to require people to correctly tag every post they make with the appropriate project management stage within certain categories.


@neil what are your thoughts? How much work would be involved in enforcing one tag from a specific tag group be?

Note that we haven’t hit the rule of three yet, but I’m still interested in answers to the above.


This would sound interesting for my forum also. We mostly have English-speaking members, but also Spanish-speaking members. We’re always translating back and forth. The thought of two separate forums (different languages) is not the way to go for us. But an auto-translated bi-lingual site - user-specified default language - would be great!


It would be easy to add a way to enforce having a tag from a tag group. I guess in this case (choose one language) we want to enforce exactly one tag, but I’m guessing some people might want at least one tag (similar to the “Minimum number of tags required in a topic” setting). I’d rather implement “at least one tag from a specific tag group” since we can kind of see this in action already at Car Talk where it’s possible for people to tag their topics with all the car make and model tags, but it doesn’t happen. Also in a multilingual community, more than one language can make sense sometimes.


Yup, that sounds smart to me.


Perhaps the way to do this would be to add it as a numerical minimum, rather than a boolean, to give more granualar control, and also leave the door open to adding a maximum?


I built this today. It’s a per-category setting in the Tags tab:

Something that can be improved is how people know what tags they have to choose from. Right now it’s showing the tag group name, but it should probably list the tags, or the most popular tags in the group in the case that there are too many to list.

@debryc @angus Thoughts?


This is so exciting, Neil!

  1. I think the settings display is perfect.
  2. I agree that there needs to be some indication of what tags they have to choose from.

Perhaps in the tags dropdown of the composer, display the tag group and its tag options first, before displaying other popular tags.

Or, perhaps the error message includes a “choose one of the following tags before posting” message. Users could click on the tag name to add it!


I went with this approach. The required tags will be suggested by the tag input if one hasn’t been chosen yet.


Another thought:
To be equitable to multiple languages, a user must be able to produce/express (source text) in the language most comfortable to him/her. And the reader must be able to consume/read in the language most comfortable to him/her (translated text). To minimize lost-in-translation issues, it would be beneficial to show side-by-side both the source text and the translated text. The base version of the translated text could be an auto-translated version. And subsequent versions of translated text could be user-contributed improvements. Just like a wiki, readers could choose to see earlier versions of translated text if they suspect lost-in-translation issues.

User must have a quick way to choose the consumed language (to over-ride any decisions made by the system or admin) - say from a language drop-down from top-right corner of screen. For e.g., an English speaking guest-user (not logged in) traveling to China might want to see text in English though browser-detection may indicate Chinese as local language.

Love this idea of translating tags and categories. Although, some technical/scientific terms may not have translations and may need to remain in source language.


Hi Neil, this is awesome! Thanks for taking this project on.

I just tried out the new required tags feature and unfortunately it didn’t work for me.

I created a category and set the required tag.

Image Description: Screenshot showing that a category’s Category Tags setting requires 1 number of tags from the project management tag group.

But I was able to successfully create a topic without any tags. Is this reproducible anywhere?

Image Description: Screenshot of topic titled “Does requiring tag work? test” that was successfully posted without any tags.

1 Like

You’re an admin on the site, so you can do whatever you want. Test with a non-staff account to see what it looks like.


That explains everything and it worked beautifully, especially the tags showing up in the dropdown. THANK YOU.

Is it possible to add a link to the tags page in the error message?

1 Like

@neil Sorry it’s take so long to respond, but I’ve taken advanage of your work here in a new plugin I’m building to implement the feature set I laid out above. It uses a modified version of the structure you added to require all topics carry a langauge tag if a site setting is enabled. So, thank you!

More notes the 'multilingual plugin' (in development) if anyone is interested.


Hopefully the user interface is relatively self-explanatory, but a few notes on the nomenclature and current behavior:

  1. Type “Base” means that the language is part of the “base list” of languages. Currently the base list is the full list languages in the Discourse codebase, specifically this list: The plugin is built in such a way that the base list can be changed at a later date if need be (albeit with some minor code changes).

  2. You’ll notice that a number of the “Base” list languages are listed has having “no translations”. This reflects the fact that the list of supported locales in Discourse is a subset of the list of languages in names.yml. No doubt, the goal is to add more supported locales over time, however this is dependent on the translation of Discourse into different locales (managed in Transifex).

  3. You can add new languages by uploading a .yml file in the format:

    iso_code: native name
    iso_code: native name

    You can include as made languages as you like in the file. You upload the file by clicking “Upload Languages” and selecting the .yml file. The list will automatically refresh with the new language added. Languages added in this way will show as type “Custom”.

  4. You can sort the list by any of the headings (apart from “Actions”) by clicking on the heading. You can also filter the list using the filter input in the top left (one minor issue with this is that it refreshes on every character added; I will fix this later).

  5. The checkboxes in the Content and Locale columns denote whether the language should be used as a content filter and / or locale. The locale management functionality is not yet complete so the checkboxes in that column will not function properly (and custom languages without locale translations will show a checkbox, instead of “no translations”).

  6. The chexboxes in the Content column will change the availability of the content languages to users, i.e if this checkbox is disabled:

    1. There will be no content language tag for that language listed in the content language selector in the composer.

    2. A user will not be able to select the content language in their profile.

Note also that the user’s content language and locale selectors are grouped at the top of their interface settings.

Note also that the initialization of the language selector in the composer (i.e. adding the user’s content lanaguage by default) should now be working.

Note also that the site setting multilingual require language tag determines whether a language tag is required. It has three potential values: no (not required of anyone), yes (required of everyone), non-staff (required of non-staff).


Hello, I have take a look, what is the way to have this sort of structure ?
I understand that ‘other languages’ is a catégory and the différent languages are the sub-categories ?
Is that right ?
And contributors post here according to their own languages ?

so they can post all subjects without any theme ?
thank you


1 Like

Does anybody think that it would be really great is to display all content and the interface to users in their native language?

AirBnB does this for years now: everybody writes in their own language and sees the responses in the language they write in.

This could be easily done technically with the Google Translate API, which to be honest, I find really impressive in how good it is.

I think the suggestions as well as the “multilingual plugin”, if I understood its function correctly, just leads to more segregation instead of removing the language barriers.

1 Like

Have you seen this?


Have you seen this?

Of course, but as far as I can tell, this only translates the posts after a click on it - or does it also work automatically and I just haven’t out found how?

1 Like

2 posts were split to a new topic: Translation cost estimates for a small community