Skip to main content

Setting Up Machine Translation

Link your Google Translate, Microsoft Translator, DeepL, Amazon Translate, KantanMT, Alexa, Intento or Custom.MT account with Transifex.

Transifex avatar
Written by Transifex
Updated this week

While Machine Translation (MT) is generally not a recommended standalone translation method, it's useful in many cases, for example, if you have a lot of non-customer-facing content or want to translate something in conjunction with human post-edit.

Transifex supports:

You'll need to have an account with your chosen service(s) before you can use it for machine translation in Transifex. You might need a subscription, depending on which service(s) you choose and how many words you're translating.

📝Note: When setting up an IAM user to use Amazon Translate with Transifex, the minimum permissions required are TranslateReadOnly.


Setting up Machine Translation for your Organization

Follow these steps to configure Machine Translation (MT) services for your entire organization.

Access Machine Translation Settings

  1. Head to your Settings by clicking on your profile icon.

  2. On the left menu, click on Machine Translation.

Add a Machine Translation provider

  1. Click the dropdown list to choose an MT vendor.

  2. If you already have a service added, click Add another Machine Translation service to configure a new one.

Enter your credentials

Select your chosen service from the list below and add your API key. Some providers require additional setup, which you can find below:

Microsoft Translator Text API

Add your subscription key. When setting this up in Azure, ensure your 'Location/Region' is set to "Global".

Amazon Translate

Provide your Access Key ID, Secret Access Key, and define the Region.

📝Note: The "HTML" and "Plain Text" modes produce the same result when using Amazon Translate due to the nature of the Amazon API. The setting distinction does not apply here.

Intento

Provide your Intento API Key.

📝Optional: Set the routing parameter to use your Intento-configured routing.

DeepL

Add your API key and select your formality preference (Formal vs. Informal).

  • Enable "Apply the default formality on translations for non-supported languages". If disabled, languages not supported by DeepL Formality will remain untranslated.

  • If using "Plain Text" mode, DeepL adds spaces around placeholders. To prevent this, we recommend setting the mode to HTML.

Custom.MT

Provide your Custom.MT API Key.

⚙️ Configuration Requirement for Custom.MT

Language pairs are managed via templates within Custom.MT, not the settings page here. You must create a separate template for each source-target pair using the format <source locale>-<target locale> (e.g., en_US-fr_CA). If a matching template is not found, that language will not be translated.

Choose Machine Translation Mode

Option A: HTML Mode (Recommended)

Transifex leverages the capabilities of various MT services to detect and preserve HTML tags while still protecting variables and custom placeholders.

Known issues: Some services may convert special characters to HTML entities (e.g., a single quote ' may become &apos;) or introduce similar inconsistencies in some scenarios.

Option B: Plain Text Mode

Transifex will attempt to protect all HTML tags, variables, and custom placeholders by treating strings as simple text.

Known issues:

  • Extra symbols appearing in translations (e.g., 0x5a4d6e521).

  • Translations are missing parts of the source sentence, altering the meaning.

  • Missing tags or placeholders if the MT service mishandles the escaped text.

Define multiple MT services and assign them specific target languages

You have the option to use one or more MT services in combination, and have each service handle specific languages. For example, you can use MT provider A for European languages and MT provider B for Asian languages.

You can specify which languages are going to be utilized by each provider by enabling the "Use this machine translation service only for specific languages" option:

This can also work when using a single MT provider to only allow specific target languages to be handled by it.

📝Note: If you set up a service with no specific languages selected, it acts as a "catch-all" for any language not handled by another service.

Example Scenario:

  • Service A (DeepL): Configured only for French and German.

  • Service B (Google): Configured with no specific languages (Default).

Result: French and German strings go to DeepL. All other languages go to Google. If you had not added Service B, those other languages would remain untranslated.

⚠️ Important: Handling Locales & Dialects

Some MT engines provide a single translation variant for any given language. For example, even if you send 5 different Portuguese locales (pt, pt_PT, pt_BR, etc.), the MT engine will translate them all using its standard "pt" output.

On the other hand, some MT engines do support variants. If, for example, you select “pt” for DeepL and your project contains “pt_BR”, strings in this locale will not be machine-translated because DeepL differentiates between "pt" and "pt_BR".

Removing an MT provider

You can remove a Machine Translation configuration by clicking “Remove MT Service” displayed after hovering over the desired service.


Machine Translation on a Project Level

In Transifex, you can go into a project and override any machine translation settings you may have set for your organization. For example, you could set up Google Translate for your organization and then use Microsoft Translator for just one project. Or you can use one API key for your organization and a different one for a specific project.

To set up machine translation for a specific project:

  • Select the project from the project navigation in the Dashboard.

  • Click on Settings.

  • In the Project Actions section on the right, click on Override organization's Machine Translation settings. A modal window will open allowing you to edit your Machine Translation settings.

    MT-mode2.png#asset:5916

  • Select the machine translation service you want to use.

  • If you chose Google Translate, add your API key. If you chose Microsoft Translator Text API (latest), add your subscription key; also, while setting this up in Azure (Microsoft's cloud), make sure to select a 'Location/Region' of "Global". If you chose Microsoft Translator (deprecated), add your Client ID and Client secret. If you choose KantanMT, add your API key and engine alias.

  • Click the Save Changes button.


Enabling Automatic Machine Translation

📝Note: Automatic Machine Translation is available on the Growth plan.

If your translation workflow always starts with Machine Translation, Automatic Machine Translation can save you from manually starting MT. Automatic MT will run whenever you add new content or update existing content to a project.

To enable automatic Machine Translation:

  1. From the Dashboard, select the project for which you want to enable Automatic Machine Translation.

  2. Click on Settings.

  3. In the submenu, click on Workflow.

  4. In the Pre-translation step, enable the AI & Machine Translation Fill-up checkbox and the MT fillup option.

  5. You have the option to exclude languages from MT Fill-up by enabling the option "Exclude languages from Machine Translation Fillup". Once you enable the setting, a list with all the project's target languages will be available for selection.

  6. Click the Save Changes button.

📝Note:

  • Please remember that Google Machine translation has limits regarding the recommended maximum length for each request, which is 5K characters. More information can be found here.

  • All four MT providers we are integrated with have their limitations in supporting variables/placeholders during the translation process. However, we have streamlined this process to the best of our ability, resulting in 99.82% of translations with variables being accurately returned.


Identifying Strings Translated by Machine Translation

There are two ways to know how many words were translated by MT.

Filter in Editor

You can identify the strings that MT translated in your resource files by applying the following filter:

More > Origin > MT: <Provider Name>

Origin_MT1.png#asset:5534

Then, you can mass-select all filtered strings and see the word count.

Reports

You can see the number of words translated by MT service on the Reports page.


Machine Translation & Translation Memory Fill-up

  • If TM Fill-up is enabled for a project, 100% Translation Memory matches will be used before Machine Translation runs.

  • Automatically machine-translated strings don't go into your Translation Memory until marked as reviewed. The same is true for strings that were machine-translated in bulk.

  • Suppose you add new project languages or enable Automatic Machine Translation and TM Fill-up after uploading/updating files. In that case, you'll need to trigger MT and fill up from TM manually. You can do this by clicking the Enable fill-up button in your project settings' Fill-up on-demand section in the Workflow tab.


Formality Options

📝Note: Formality options are only available to Transifex -DeepL integration

Through Transifex-DeepL integration, you can now set whether the translated text should lean towards formal or informal language.


This feature currently only works for target languages "DE" (German), "FR" (French), "IT" (Italian), "ES" (Spanish), "NL" (Dutch), "PL" (Polish), "PT-PT", "PT-BR" (Portuguese) and "RU" (Russian). Possible options are:

  • "more" - for a more formal language

  • "less" - for a more informal language

Formality settings can be found under Settings -> Machine Translation.


Glossary Terms Protection

Transifex ensures translation consistency across Google Translate, Microsoft Translator, DeepL Translate, KantanMT, and Alexa Translations A.I. when running Machine Translation on your strings, preserving your terminology.

There's no need for manual configuration, as the system automatically preserves glossary terms whenever they are detected within the source string.

You can choose whether Transifex or the MT Provider manages the preservation of your glossary and placeholders. You can use the following options to configure your preference:

  • Preserve Transifex glossary terms: Check this box to force the MT engine to adhere to your Transifex Glossary. Uncheck it if you prefer to rely on the provider's built-in glossary functionality.

  • Preserve placeholders: Check this box to have Transifex protect variables and tags before sending strings for translation. Uncheck it to allow the MT provider to handle placeholder logic.

📝Note: For Custom.MT and Intento MT, Glossary, and Placeholder protection are disabled by default. This allows customers to leverage the providers’ built-in preservation functionality.

Exception to Glossary Terms Protection

In case a glossary term's translation is missing or contains only spaces, the machine translation will ignore them, and their occurrences on strings in projects linked to this glossary will be translated by machine translation as standard text.

Example

Let's say you have the term "Water Bottle" in your glossary, and this term is not translated to one of your glossary's target languages, in this case, Russian(ru).

And, in one of your projects using this glossary, you have the string "Don't forget to bring a water bottle to stay hydrated on your outdoor adventure."; when you run your translation machine service on this string, the string will be completely translated to Russian as if it were a string that does not contain a glossary term at all.


Glossary Terms Priority

When using machine translation with a glossary, you may come across a situation where a particular string matches multiple Glossary terms. Furthermore, there may be some overlap in the words used between these terms. In such scenarios, our platform needs to determine which Glossary term to use by considering some conditions on these terms; here are the conditions listed in priority order:

  • Term (or variant) is translated.

  • Term (or variant) word count.

  • Single terms (without variants).

  • Case sensitive terms.

Considering the above conditions priorities, when you have multiple glossary terms matches in a string that you're translating using Machine translation, it will happen as follows:

  1. Term (or variant) is translated. Transifex checks if the glossary terms are translated in the target language you're translating with Machine translation. In case only one term is translated, this will be used for the translation of the string.

    1. If more than one term is translated, Transifex will pass to the next condition.

    2. If none of the terms are translated, the terms will be ignored, considering the Exception to glossary terms protection rule, and the matching words will be translated as normal text.

  2. Term (or variant) word count. Our platform will check the terms' word counts, and the term with the most words will be taken to translate the string.

    1. If multiple terms contain the maximum word count, Transifex will pass to the next condition.

  3. Single terms (without variants). This condition refers to whether the term is part of a glossary variant or a single term. Transifex will prioritize the use of single terms over terms with variants.

    1. In case more than one term matches the criteria, then Transifex will pass to the next condition.

  4. Case sensitive terms. The last condition refers to case sensitivity. Specifically. Transifex platform checks if the case-sensitive setting is enabled and takes the one that fulfills the condition.

Example

Let's say you want to translate the string "Machine Learning Model Evaluation" into Spanish(es) using machine translation and having the following Glossary. Note: Only "Machine Learning Model" term is case-sensitive.

All the terms will be offered in the Glossary tab for this string; this means Transifex will need to use the conditions priorities to determine the translation that will be used in the translation.

This is what Transifex will do step by step:

  1. The term "Model" will be discarded by the "Term (or variant) is translated" condition because it does not have a translation.

  2. The term "Machine" will be discarded by the "Term (or variant) word count" condition because the other terms contain more words.

  3. The term "Model Evaluation Rule" will be discarded by the "Single terms (without variants)" because it has other variants such as Model Evaluation, M. Evaluation, and Mdl Ev.

  4. Transifex will choose between "Learning model evaluation" and "Machine Learning Model" terms; only the second term has case sensitivity enabled and matches with the string content, which is why the first term will be discarded.

  5. Finally, Transifex will translate the String using Machine Translation, preserving only the term "Machine Learning Model"

📝Note: Amazon provides its own dedicated solution for glossary support. Please refer to our documentation here for additional information.

Handling Placeholders in Machine Translation Outputs

Translation results may vary depending on the language and MT engine behaviour when using machine translation with content that includes placeholders. This is particularly true in cases where placeholders are embedded within complex sentence structures or surrounded by formatting characters.

Although we apply techniques to preserve placeholders and prevent unwanted modifications by the MT engine, minor formatting inconsistencies such as unexpected punctuation, spacing, or quotation marks may still occur due to the inherent variability in how MT engines process non-translatable elements.

This behaviour is a known limitation of third-party MT systems and cannot be fully controlled or corrected through pre- or post-processing. We continue to evaluate improvements, but slight inconsistencies may persist in some cases.

If precise formatting is critical, we recommend a human translator perform a post-editing review to ensure the output meets quality expectations.


💡Tip

Looking for more help? Get support from our Transifex Community Forum!

Find answers or post to get help from Transifex Support and our Community.

Did this answer your question?