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.
DeepL Translate (We support both DeepL API Free and DeepL API Pro, and our integration is based on version 2 (v2) of the DeepL API.)
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.
Machine Translation on an Organization Level
To set up machine translation for your whole organization:
Head to your Organization Settings from the main navigation.
On the left menu, click on Machine Translation.
Click on “Add a Machine Translation Service”.
In the form that is displayed, select one of the available services:
Microsoft Translator Text API
Alexa Translations A.I.
Configuration may vary depending on the service you select:
If you want to use Microsoft Translator, choose Microsoft Translator Text API and add your subscription key. Also, while setting this up in Azure, set your 'Location/Region' to "Global".
If you chose Google Translate, add your API key.
If you chose KantanMT, add your API key and engine alias (check here for more details).
If you chose DeepL, you must add your API key and set whether the translated text should lean towards formal or informal language. Optionally, you can enable the "Apply the default formality on translations for non-supported languages" option. By enabling this option, languages not supported in the selected DeepL Formality will be translated using the default formality; if this option is disabled, these languages will remain untranslated.
This functionality is described in DeepL Documentation here.
For DeepL and when the mode is set to ‘Plain Text’, strings that include placeholders display the following behavior: To ensure that placeholders are preserved in the translation, spaces are intentionally introduced before and after them. To avoid this from happening, we suggest setting DeepL mode to ‘HTML’.
If you chose Amazon Translate, provide your Amazon Translate Access Key ID, and Amazon Translate Secret Access Key as well as define the Amazon Translate Region.
If you chose Alexa Translations A.I., provide your Alexa API Key.
Choose Machine Translation Mode: HTML or plain text.
Transifex leverages most of the different MT services' capability to detect and keep HTML tags; Transifex protects only the variables and custom placeholders. Current known MT service hiccups include conversions of special characters to their HTML entity counterparts. (ex., a single quote character could become a
'in the translation).
Plain text mode
Transifex is trying to protect all HTML tags, variables, and custom placeholders feeding strings as simple text to Machine Translation services. Current known MT service hiccups include:
Extra symbols (ex. 0x5a4d6e521).
Translations missing part of a sentence found in the source, thus altering its meaning.
Missing HTML tags, variables, and custom placeholders as the MT service mishandles them.
You can use the selected Machine Translation service only for specific target languages by clicking on “Use this Machine Translation service only for specific languages” and selecting the set of languages you want to use the chosen service. If you don’t select specific languages, this service will be used as the Default for all target languages.
Optional: If you need to use a different Machine Translation setup for certain target languages, you can add an additional Machine Translation service configuration for those languages. To do this, simply click on the "Add another Machine Translation service" option below your existing configuration, add the credentials for this new service, and select a different set of languages than the ones selected in your default machine translation setup.
You can remove a Machine Translation configuration by clicking “Remove MT Service” displayed after hovering over the desired service.
When you are done setting the desired Machine Translation service(s), click on “Save changes”
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 will open where you can edit your Machine Translation settings.
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
If you have a translation workflow that 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:
From the Dashboard, select the project for which you want to enable Automatic Machine Translation.
Click on Settings.
In the submenu, click on Workflow.
In the Pre-translation step, enable the Machine Translation Fill-up option.
You have the option to exclude languages from Machine Translation Fill-up if you want to by enabling the option "Exclude languages from Machine Translation Fillup" as shown below:
Once you enable the setting, a list with all the project's target languages will be available for selection.
Click the Save Changes button.
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>
Then, you can mass-select all filtered strings and see the word count.
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.
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.
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 Organization 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 and preserves your terminology, ensuring that it remains intact during the translation process.
There's no need for manual configuration, as the system automatically preserves glossary terms whenever they are detected within the source string.
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.
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:
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.
If more than one term is translated, Transifex will pass to the next condition.
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.
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.
If multiple terms contain the maximum word count, Transifex will pass to the next condition.
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.
In case more than one term matches the criteria, then Transifex will pass to the next condition.
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.
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:
The term "Model" will be discarded by the "Term (or variant) is translated" condition because it does not have a translation.
The term "Machine" will be discarded by the "Term (or variant) word count" condition because the other terms contain more words.
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.
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.
Finally, Transifex will translate the String using Machine Translation, preserving only the term "Machine Learning Model"
Looking for more help? Get support from our Transifex Community Forum!
Find answers or post to get help from Transifex Support and our Community.