Translation.io¶
Translation.io is a professional synchronization and collaboration platform that will assist your team in the translation of your Lingui application.
- Links:
Website: https://translation.io/lingui
Features¶
Smooth Team Management¶
Invite your collaborators using their email or username, and assign them a role and a target language. We’ll bring them on board and keep them informed about any new activity in their language.
- Learn more:
Elegant Translation Process¶
Our interface was designed to be the most ergonomic way to translate. It provides translation suggestions (from TM, Google Translate or DeepL), context, discussion and history.
Keyboard shortcuts allow translators to stay focused on their work, visual hints indicate when something went wrong, for example when an interpolated variable or HTML tag is missing.
- Learn more:
Syntax Highlighting¶
Sometimes you have no choice but to confront your translators with HTML or interpolated variables. The problem is that translators do not necessarily know the meaning of these notations and may be tempted to translate them or may inadvertently alter them.
Hello {name}
should never be translated as Bonjour {nom}
, and we have several
mechanisms to ensure that, like warnings and auto-completion:
Smart Plural Management¶
Lingui allows to write plurals using the ICU MessageFormat syntax that looks like this:
{count, plural, =0 {No messages}
one {# message}
other {# messages}}
But you can’t ask a translator to understand this syntax, and he or she would
be tempted to translate one
or other
keywords in other languages,
breaking your code at the same time.
That’s why we deconstruct the plural syntaxes to make them easy to translate, and
then reconstruct them inside your local .po
files.
If the target language has more plural forms than the source language,
we also provide some examples to the translator, because it could be unclear what
plural form the few
or other
keyword may refer to in that specific
target language (in this example, Czech has 3 plural forms).
Efficient Search¶
Our powerful search helps translators to maintain consistency of terms throughout their work. In addition, they are able to filter depending on a particular source file or context. To provide a more enjoyable experience, this lightning-fast search works without any page reloading.
- Learn more:
Adaptive Workflows using Tags¶
Our interface is flexible enough to adapt to your own translation workflows. Add custom tags to your segments and you’ll be directly able to filter them. Moreover, these tags will appear in the statistics page so you can use them for reporting.
- Learn more:
Installation¶
1. Create your Lingui project¶
Create an account on Translation.io and create a new Lingui project.
2. Configure your application¶
Copy the .linguirc
configuration file that was generated for you to the
root of your application.
The configuration file looks like this:
{
[...]
"format": "po",
"service": {
"name": "TranslationIO",
"apiKey": "abcdefghijklmnopqrstuvwxyz012345"
}
}
3. Add the following scripts¶
Add these lines to your package.json
to make your life easier.
{
"scripts": {
"sync": "lingui extract --overwrite && lingui compile",
"sync_and_purge": "lingui extract --overwrite --clean && lingui compile"
}
}
4. Initialize your project¶
Initialize your project and upload your source text and potential existing translations with:
# NPM
npm run sync
# Yarn
yarn sync
Usage¶
Sync¶
To send new translatable strings and get new translations from Translation.io, and at the same time generate the minified JavaScript catalog files, simply run:
# NPM
npm run sync
# Yarn
yarn sync
Sync and Purge¶
If you need to remove unused strings from Translation.io, using the current branch as reference.
As the name says, this operation will also perform a sync at the same time.
Warning: all strings that are not present in the current local branch will be permanently deleted from Translation.io.
# NPM
npm run sync_and_purge
# Yarn
yarn sync_and_purge
If you need some help with your project, feel free to contact contact@translation.io