Custom MT App

You can translate your content using machine translation engines in Crowdin. If you don’t see the engine you need among the supported MT engines, you can connect your own engine by creating an app.

Creating the Custom MT App

Anyone can create apps that will extend the functionality of Crowdin. For detailed instructions, read articles Getting started with Crowdin apps and Creating an OAuth app.

The functionality of some apps is implemented using webhook events, while others use modules. For this kind of app, you’ll need to utilize modules. Modules are the functional parts that integrate each app into specific parts of Crowdin UI and interact with it. Make sure to use the “custom-mt” module in your app manifest.

Note: Ensure your app uses the same language codes as Crowdin supports. If some languages don’t match, set up language mapping.

Request example:

Request body:

{"strings": ["Start", "Next"] }


  "target": "de"
  "source": "en"
  "jwtToken": "jwt token"

Response example:

  "data": {
    "translations": ["Start", "Nächste"]

Handling of Non-Translatable Elements by Your MT Engine

For strings containing non-translatable elements (e.g., tags, placeholders, etc.), Crowdin replaces these elements with special notranslate tags. This ensures that these elements remain in their original state after the string is translated by the MT engine. Crowdin uses this approach to avoid potential issues that could break exported translation files.

Below you can see the examples of a string before and after the modification.

Here is an example of how a string containing non-translatable elements (tags, placeholders, etc.) looks in Crowdin:


This is how Crowdin modifies the above string before sending it to the MT engine:

<span class="notranslate">0</span>Task:<span class="notranslate">1</span>

If your MT engine already has a similar feature but implements it differently from Crowdin, we recommend adjusting the handling of non-translatable elements in your Custom MT app to match your MT engine’s implementation. Specifically, replace Crowdin’s defaults, like

<span class="notranslate">%index%</span>

with do-not-translate elements specific to your MT engine.

Here you can explore an implementation example of do-not-translate elements in Amazon Translate: Using do-not-translate in Amazon Translate.

If the MT engine sends a translation to Crowdin that doesn’t include all tags in their original state or if they are somehow altered (e.g., translated), Crowdin will ignore such translations and won’t save them to the string.

Installing the Custom MT App

Once you create the app, you can install it in Crowdin via manifest.json.

To install the app, follow these steps:

  1. Go to Account Settings > Crowdin Applications.
  2. Click Manual install.
  3. In the appeared dialog, paste the manifest in the Manifest URL field.

Now, you can connect this MT to your projects:

  1. Open your profile home page and go to the Machine Translation tab.
  2. Scroll down to the Custom MT Translator section and select the app you connected from the drop-down list.

Once connected, you can use it to pre-translate content or show translation suggestions in the Editor.

Was this article helpful?