Lorsque la traduction par DeepL est activée dans le moteur, on soumet les requêtes de traduction de texte à DeepL si toutes les langues (source et cible) sont considérées comme supportées par DeepL. Si ce n’est pas le cas, la requête sera soumise à l’EVP.
Les indications ci-dessous concernent la version 1 de l’intégration de la traduction DeepL dans le moteur (Release 2024.2).
⚠️ A noter que le basculement vers l’EVP exclut forcément l’usage du glossaire, puisqu’il s’agit d’une fonctionnalité propre à DeepL
Rappel : codification générale des langues (ISO)
Une langue est désignée par un code de langue ISO 639. Il existe différente forme de code ISO, déclinée en 639-1 (qu’on appelle également alpha-2, parce que le code est sur 2 lettres), 639-2 et 639-3.
Un code de langue peut être associé à un variant de pays, correspondant à la norme ISO 3166, déclinée également en 3166-1 (alpha-2), 3166-2, etc. Le code de pays suit le code de langue, séparé par un tiret, ou un underscore selon les systèmes.
Par exemple,
le code de langue ISO 639-1 (alpha-2) du français est fr
fr-FR est le code de la langue française parlée en France (association du code de langue fr et du code de pays FR)
fr-CA est le code de la langue française parlée au Canada (association du code de langue fr et du code de pays CA)
en-GB est le code de la langue anglaise parlée en Grande Bretagne
en-US est le code de la langue anglais parlée au USA
Fonctionnement de la traduction DeepL
DeepL supporte un certain nombre de langues pour la traduction :
certaines par un code de langue ISO-639-1 (alpha 2)
certaines par un code de langue plus variant de pays (ISO-639-1 (alpha2) suivi de ISO-3166-1 (alpha 2))
les langues sources (la langue du texte à traduire) supportées actuellement sont toutes des langues sans variant
les langues cibles (celles vers lesquelles traduire) sont pour la plupart des code de langue ISO-639-1, à l’exception de
en-GB pour l’anglais britanique
en-US pour l’anglais américain
pt-BR pour le portugais brésilien
pt-PT pour le portugais autre que brésilien
⚠️ A noter que DeepL ne supporte pas la traduction vers l’anglais (code en) ni la traduction vers le portugais (pt). Le variant est impératif lorsqu’on indique une langue cible de type anglaise ou portugaise.
⚠️ A noter également, qu’en ce qui concerne les glossaires, seule la langue est supportée, même lorsqu’il s’agit de traduire vers une langue avec variant. Par exemple, le glossaire utilisé pour une traduction fr vers en-GB sera le glossaire fr vers en.
Il est possible d’obtenir la liste des langues supportées via l’URL :
Fonctionnement des requêtes de traduction envoyées à DeepL
Lorsqu’une requête de traduction doit être envoyée à DeepL, les codes de langues sont convertis selon ces règles :
dans tous les cas, la casse est convertie pour être conforme à la casse DeepL (haut de casse). La casse n’a donc aucune importance dans les codes passés en paramètres.
dans tous les cas, le tiret et l’underscore sont considérés comme caractère de séparation de code de langue et de pays. On peut donc utiliser l’un ou l’autre caractère indifféremment dans les codes passés en paramètres.
pour les langues sources,
on ne prend toujours que la langue (on ignore donc le variant de pays s’il est présent). Par exemple, si la langue source indiquée dans les paramètres est fr_CA, on considérera que la langue source du texte à traduire est FR (français)
pour les langues cibles
lorsqu’il s’agit d’une langue DeepL sans variant comme FR (le français), on ne considère que la langue. Par exemple, si on demande une traduction en fr_BE (français de Belgique), on enverra à DeepL une demande de traduction vers FR.
lorsqu’il s’agit d’une langue DeepL avec variant
si le variant est supporté par DeepL, on le conserve. Par exemple, si on demande une traduction vers en_GB, on demandera bien à DeepL une traduction en EN-GB.
si le variant n’est pas supporté par DeepL, on choisit arbitrairement un variant supporté à la place :
variant US pour le code de langue EN (par exemple, si on demande une traduction en_CA, on enverra à DeepL une requête pour une traduction en EN-US)
variant PT pour le code de langue PT.
support des codes alpha-3 : si le code alpha-3 est convertible nativement par Java en alpha-2, alors ce code sera converti en code DeepL
Test du support des langues avant envoi à DeepL
Avant d’envoyer une requête à DeepL, on teste les langues sources et cibles indiquées dans les paramètres de la requête de demande de traduction.
Si l’une des langues n’est pas considérée comme supportée, on bascule sur l’EVP.
Test en mode strict
En mode strict on vérifie si le code indiqué dans les paramètres est supporté par DeepL (à la casse et au séparateur près).
Avec une exception pour l’anglais :
le code EN est toujours considéré comme supporté comme langue cible (alors qu’il ne l’est pas par DeepL en tant que langue cible
le code EN avec variant de pays est toujours considéré comme supporté comme langue source, de façon à ce que les textes en_GB, en_US ou en_CA soient bien traductibles en mode strict, en tant que textes en EN, malgré que DeepL ne supporte pas ces langues en tant que langue source.
le code ENG n’est pas considéré comme étant EN
Par exemple, si on demande la traduction d’un texte en fr_CA (français canadien) vers en_US, on aura basculement sur l’EVP, parce que DeepL ne supporte pas le fr_CA comme langue source.
Test en mode flexible
En mode flexible, on convertit d’abord un code indiqué dans les paramètres vers un code DeepL (comme indiqué ci-avant) et si ce code est bien supporté par DeepL, on envoie la requête à DeepL (sinon on bascule sur l’EVP).
Par exemple, si le code de langue source est fr_CA, on le convertit en FR. Ce code est bien supporté par DeepL donc la demande de traduction sera envoyée à DeepL (si tant est que les codes de langues cibles sont bien supportés également par DeepL).
⚠️ Mais attention, si on demande une traduction en zh_SG (Chinois de Singapour), on traduira le texte en zh (soit en chinois simplifié) car c’est le seul chinois supporté par DeepL.
Choix entre le mode flexible et le mode strict
Pour savoir si on doit choisir entre le mode flexible et le mode strict, il faut se demander si on tient à avoir une traduction différenciée sur le pays.
Par exemple, si le client tient absolument à ce qu’une traduction vers fr_CA ne soit pas une traduction vers FR, ou en particulier, si le client tient à une traduction différenciée entre le chinois de Chine (zh_CN) et de Singapour (zh_SG), il faut utiliser le mode strict (qui provoquera un basculement vers l’EVP, puisqu’aucune de ces langues n’est supportées par DeepL).
Si une traduction vers une langue peut être effectuée vers la traduction dans la langue sans variant de pays, on peut choisir le mode flexible. Par exemple, une demande de traduction vers fr_CA sera une traduction DeepL vers FR en mode flexible, alors qu’elle basculera sur l’EVP en mode strict.