Translating Discourse with Transifex

Jeff Atwood May 12, 2014

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.

They have a generous free tier for open source projects, and they’ve provided excellent support so far. This also gives us a dashboard to measure our progress on localization — we currently have 15 languages at 80% translated or better, which is encouraging!

Transifex makes it much easier to contribute a little bit of localization to Discourse, as you can submit a string translation entirely through the web UI there:

As you can see, Transifex tracks how many strings haven’t been translated yet in any given language, and offers up any contributed community translations for approval as suggestions.

Or, if you have time for a bigger chunk of work:

Neil did a lot of work to get basic Transifex integration up and running a week ago. We’ll continue to refine our integration with Transifex to make the translation workflow as pain-free and simple as possible. Discourse is an open-source system of rainbows; civil, open discussion should be available to every human being on earth no matter what language you speak.

If you’d like to see Discourse in a different language, or better translated in a current language, help out an open source project by hopping over to Transifex and contributing a translation or two in your spare time!

(A huge thanks to hey_julien, camilohollanda, erlend_sh, jbruni, blang, and robypez — we’ll be reaching out to you soon with a small token of our appreciation for getting Discourse started on Transifex and contributing enormous chunks of translation!)

Notable Replies

  1. 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.

  2. 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:

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

  4. Avatar for neil neil says:

    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!

Continue the discussion

6 more replies