Machine Translation with DeepL

You can now use DeepL alongside Google Translate to automatically translate your applications. DeepL is a machine translation service which uses neural networks trained from the Linguee database.

DeepL Logo

Blind tests conducted by DeepL have ranked it well above other competitor machine-translation solutions. This is backed up by the quality of the translations produced, which are found to be more subtle and precise.

Depending on the case, and their availability, you can therefore use DeepL or Google Translate for each of your target languages. This applies to both the machine-translation used in the synchronization process, and to the suggestions offered to the translators as they work.

DeepL or Google Translate for Target Languages

You can find a list of all the languages supported by DeepL on our languages page.


High Speed Machine Translation

In adding this feature, we took the opportunity to radically speed up the machine translation process.

It is now possible to automatically translate up to 400 segments per second during a synchronization. This means that a project with 100 additional sentences to translate into 20 languages will only take 5 seconds of synchronization time to auto-translate.

This is 10 times faster than our previous auto-translation times, and goes hand in hand with the constant speed improvements you are probably already aware of.

Translation.io for React and JavaScript using Lingui

For many years we had been looking for the best way to localize a JavaScript and/or React project with Translation.io.

Most of the solutions we found seemed too complex for developers, owing to their verbose syntax or keys which have to be created manually. They were also over-complicated for translators who sometimes would have to translate such phrases as:

{count, plural, =0{no results} one{one result} other{# results} }

All these issues vanished the day we discovered LinguiJS.

Lingui Logo

Lingui is an extremely light, open-source library which can be used to localize a JavaScript or React application. The code remains clean and legible and there is no need to manage the keys manually.

While its low-level API is similar to that of React Intl (FormatJS), it is possible to access a higher level of abstraction which makes the code more compact, meaning that translators don’t have to translate any complex ICU MessageFormat syntax.

But enough talk! The following examples speak louder than words:

React JSX Syntax

<!-- Regular -->
<Trans>
  Text to be translated
</Trans>

<!-- Variable Interpolation -->
<Trans>
  Hello {name}
</Trans>

<!-- Simple HTML Tags. -->
<!-- Translators will see "Text with <0>HTML</0> tags" -->
<Trans>
  Text with <em>HTML</em> tags
</Trans>

<!-- Complex HTML Tags -->
<!-- Translators will see "Text with a <0>link</0>" -->
<Trans>
  Text with a
  <a href="https://google.com" target="_blank">link</a>
</Trans>

<!-- Plural -->
<!-- Translators will see "You've got 1 message" and "You've got # messages" -->
<Plural
  value={count}
  one="You've got 1 message"
  other="You've got # messages"
/>

JavaScript Syntax

// Regular
t`Text to be translated`

// Variable Interpolation
t`Hello ${name}`

// Plural
plural(count, {
  one: "You've got 1 message",
  other: "You've got # messages"
})

// Variable interpolation
plural(count, {
  one: `Hello ${name}, you've got 1 message`,
  other: `Hello ${name}, you've got # messages`
})

The advantage of Translation.io is that translators can see the exact number of plural forms in the current target language, as well as some examples to help them. They don’t need to translate unmeaningful syntax or add the missing forms themselves.

In this example, Czech uses 3 plural forms: one, few and other.

Plural forms example for Czech


Rather than create our own plugin to use with Lingui, we have chosen to directly integrate our synchronization workflow into their open-source code, while making it easy for other competitor cloud providers to integrate their workflow later on.

We are convinced that Lingui is the solution for efficient localization in JavaScript and React, which is why we have put our money where our mouth is: we are now one of their principal sponsor, and plan to continue to support them for a long time to come.

Some links to get started:

Improved Plural Forms Management and Examples

At Translation.io, we systematically implement the latest Unicode standards for the rules governing plurals. These rules are applied in our translation interface, and where possible, in the files sent back into your application.

You may already be aware that each language has a set number of plural forms, ranging from 1 for Chinese to 6 for Arabic.

There are clear rules, based on quantity, governing the plural form which will apply in a given context.

Here is an example of two languages with the same number of plural forms but to which different rules apply according to the quantity.

Plural forms of English

  • 0 emails (other plural form).
  • 1 email (one plural form).
  • 2 emails (other plural form).

Plural forms of French

  • 0 e-mail (one plural form).
  • 1 e-mail (one plural form ).
  • 2 e-mails (other plural form).


You can see that for a quantity of 0, in English it is the form other that applies, while in French it is the form one.

When faced with an increasing number of plural forms, this can soon become quite complicated to manage. This is why we automatically show your translators the correct number of plural forms to translate in their interface according to the target language selected.

In this example, Czech uses 3 plural forms: one, few and other.

Plural forms example for Czech

And as the names given by the Unicode standard to the plural forms can be ambiguous, we have added a concrete example of each form in the translator’s language.

Small improvements like this can make a big difference, by eliminating plural errors which can be difficult to detect and correct within your application.

You can find all the rules governing plurals as applied by Translation.io, together with the suggested examples, on this List of Languages and their Plural Cases.

Multiple Selection of Segments

We recently improved the translation interface to allow several segments to be selected at once. This multiple selection is done using the keyboard and mouse just like in your usual file explorer.

We have used the conventional shortcuts of your Operating System:

  • Ctrl+click (Cmd sur MacOS) to select the segments one by one.
  • Maj+click to select groups of segments.

Multi-selection of segments for tagging

You can also use the keyboard shortcuts to navigate between segments:

  • Ctrl (ou Cmd) and arrow to navigate between segments.
  • Maj and arrow to extend or reduce the group of segments selected.

Multi-selection using keyboard

To select all the segments currently filtered, you can click on the checkbox beside the filters or simply use Ctrl+a. To deselect the active selection, simply click outside of the interface.

Select All Segments

For the time being, it is only possible to add or remove tags in bulk, but we are working on other functionalities like scoped statistics on the selected segments, or exporting translations into the most common formats.

Clone Projects

Are you sometimes scared to Sync and Purge your project, in case you lose important data? Or perhaps you’d like to do some tests without putting your main project in danger?

We have made it possible to clone your project with the option of retaining such data as collaborators and roles, change history or tags.

You simply go into the project settings and select “clone” to go to this page:

Clone Project on Translation.io

After validating the form, you will be immediately redirected to the new cloned project.