Discourse Translator

:discourse2: Summary Discourse Translator translates posts on Discourse using Microsoft, Google, or Yandex translation APIs.
:hammer_and_wrench: Repository Link https://github.com/discourse/discourse-translator
:open_book: Install Guide How to install plugins in Discourse


  • Each post is only translated once per locale which saves you :moneybag:
    • Note that language detection is also run once for every post. Be careful when enabling this on old and large forums.
  • Access Token is cached server side for faster translations.
  • Translations are rate limited to 3 per minute by default (admins can configure this value)

Translation Services Supported

Configuration Steps

  1. Follow the steps in Microsoft Translator API on Azure to obtain a subscription key. You may pick from any of the available subscription offers.

  2. In your Discourse, under Admin > Settings > Plugins, enter the subscription key that you’ve obtained from the steps above.

enter subscription key

  1. In your Discourse, under Admin > Settings > Basic Setup, enable allow user locale.
Google Translator
  1. Go to https://console.developers.google.com

  2. Click on My Project

my project

  1. Click on the :heavy_plus_sign: to create a new project

  1. Enter your project name and click create

  2. Select Enable API and search for Google Cloud Translator API. Look for the enable button and click it to enable the API. Note that there is no free tier for the Google Translator API so it may prompt you to enable billing.

  3. Once you’re done, click on credentials in the left menu


  1. Click create credentials and select API key. Copy the API Key and paste it into the translator google api key site setting in Discourse.

  2. In Discourse, under Admin > Settings > Basic Setup, enable allow user locale.


Name Description
translator enabled Allow inline translation of posts.
translator The provider of the translation service.
translator azure subscription key Azure Subscription Key
translator azure region Azure Region
translator azure custom subdomain Required if using a Virtual Network or Firewall for Azure Cognitive Services. Note: Only enter the custom subdomain not the full custom endpoint.
translator aws region AWS Region
translator aws key id AWS Key ID
translator aws secret access AWS secret access key
translator aws iam role AWS IAM Role
translator google api key Google API Key
translator yandex api key Yandex API Key
translator libretranslate endpoint LibreTranslate Endpoint
translator libretranslate api key LibreTranslate API Key
max translations per minute The number of translations per minute a regular user can perform.
restrict translation by group Only allowlisted groups can translate
restrict translation by poster group Only allow translation of posts made by allowlisted users

Known Issues

  • Does not translate text within polls generated by discourse-poll plugin.
  • Images are enlarged upon translating.

:discourse2: Hosted by us? This plugin is available on our Enterprise plan.

Last edited by @JammyDodger 2024-06-18T14:19:34Z

Check documentPerform check on document:

3 posts were split to a new topic: Not receiving translations for ‘Everyone’

A post was split to a new topic: Is Google translate really so expensive?

2 posts were split to a new topic: Are translations shown to crawlers?

4 posts were split to a new topic: Increase Amazon translate limit to ~10,000 characters


the translator plugin causes the latest version of Discourse to get stuck on the first loading page.

As soon as the translator is disabled, everything works perfectly. I understand this might not be the perfect place to report this, but I see no other option.


1 Like

Please make sure you’re using the official version of the plugin https://github.com/discourse/discourse-translator. Other people with the same issue were using unofficial forks of the plugin which are no longer maintained.


Hi @david,

you are correct. I was using the LibreTranslate fork.

Thank you very much.


https://deeplx.owo.network/, DeepL Translate: The world's most accurate translator I wish I could use DeepLX or DeepL API as well.


I noticed that the translations are forced since 2 days ago. Is that normal? Maybe I just need to make a change in the settings?

And when I click on the “translation icon” to hide it, it doesn’t work.

Thank you

This plugin appears to be very beneficial in bridging language barriers.

Quick question, will the plugin also translate blockquotes and preformatted text, such as code snippets, which probably shouldn’t be translated?