Translating Discourse with Transifex

:warning: As of July 2020, Discourse has switched from using Transifex to Crowdin as a localization platform. Have a look at Contribute a translation to Discourse for details about using the service.

In Localizing Discourse, I noted that we leveraged the mature, built in localization support in Rails to make it easier to translate Discourse into your preferred language. To better support large scale translations for Discourse, we’re now using a crowdsourcing translation service, Transifex.

This topic is for comments on the original blog entry at:


Courtesy of @lidel, here is an easy process to get started translating Discourse in Transifex. Reprinted here with his permission.

My priority is to translate user-facing labels first, so I focus on client (client.*.yml) strings:

  1. Enable the selected language of your choice at your Discourse instance and start browsing it. We’ll call it by its language identifier, {LANG}

  2. When you find missing translation such as [{LANG}.categories.topics] copy its key name (categories.topics)

  3. Go to{LANG} and click client.en.yml.

  4. A Pop-up will open, click Translate now.

  5. Translation interface should load and be ready for use.

  6. You can just start translating, but usually you don’t know the context, or just do not care that much about super-rare message and want to fix a specific label.

    That is why I search for strings with the Key: selector:

    • On top left you have a search box. Click there.

    • A handy pop-up with additional search criteria will show up.

    • Select Key: paste categories.topics and hit [Enter]

    • You should see that one result is found and it is already translated

And that is all.

Currently I repeat #6 for every missing label I see in my instance. I already filled most of irritating gaps, so it should be quite usable even at this stage.

If you want to fetch latest translation of client.en.yml there is Download for use link in the pop-up mentioned in step #4. Or just wait for upstream Discourse update.


Thank you. I appreciate the unexpected gift a lot.

I have two boys (4yo and 6yo at the moment). When we arrive from the supermarket and they’re at home, they come near jumping, happy, and asking: “Daddy, what did you brought us?” - Knowing the sweets and pretzels they like, it is easy to make them - and us - happier.

I don’t know what Discourse’s gift will be; the gifting act by itself is praiseworthy. Yet, I feel like the kids, in expectation about what Daddy is bringing. :gift_heart:


Thanks again to @neil & co for giving us humble translators so much love and care :heartpulse:

I noticed the Norwegian translation is lagging behind. I aim to have it up to snuff in time before v1.0.

1 Like

I’ve linked to a book. I should have included its video teaser - here is it now (watch below).

It is all about gifts, community and, in my humble opinion, having a good Civilized Discourse Construction Kit available in the greatest quantity of languages possible can certainly contribute to the mentioned transition:

1 Like

In the end this is a nice way to translate such a large project. After almost a year of comparing commits for the Dutch translation I’m happy to use Transifex.

When the original post on localising Discourse came out I was thinking I could be cheeky and submit a file with English (UK) translations. With this interface I could just submit the few words that would be different. So much easier.

Glad to help for the translation of this next decade software :slight_smile:

And thanks to @neil for his work on the automatic integration !

And by “different” you mean “incorrect”, right :wink:

I mean “would now be correct”, but I was being diplomatic. :smiley:


And thanks to all the translators who are generously donating their time to Discourse! Looking at the Transifex project right now, I see 19 pending requests from people who want to join translation teams. Amazing!


We have successfully transferred ownership of the Transifex project to Discourse, as well.

As of July 2020, Discourse has switched from using Transifex to Crowdin as a localization platform. Have a look at Contribute a translation to Discourse for details about using the service.