Traduction avec IA intégrée

Publié le 12 novembre 2024

Utilisez l'API Translator dans Chrome pour traduire du texte dans le navigateur à l'aide de modèles d'IA locaux.

Il est possible que votre site Web propose déjà du contenu dans plusieurs langues pour le rendre accessible à une audience mondiale. Avec l'API Translator, les utilisateurs peuvent contribuer dans leur langue maternelle. Par exemple, les utilisateurs peuvent participer aux chats d'assistance dans leur langue maternelle, et votre site peut les traduire dans la langue utilisée par vos agents d'assistance avant qu'ils ne quittent l'appareil de l'utilisateur. Cela crée une expérience fluide, rapide et inclusive pour tous les utilisateurs.

La traduction de contenus sur le Web nécessite généralement l'utilisation d'un service cloud. Tout d'abord, le contenu source est importé sur un serveur, qui effectue la traduction dans une langue cible, puis le texte obtenu est téléchargé et renvoyé à l'utilisateur. En exécutant la traduction sur le client, vous économisez le temps requis par les aller-retours vers le serveur et le coût d'hébergement du service de traduction.

Disponibilité

Bien que la langue cible sélectionnée soit toujours connue, il peut arriver que la langue source soit inconnue, par exemple pour les contenus générés par les utilisateurs. Dans ce cas, la proposition d'API Translator inclut à la fois l'API Translator et l'API Language Detector, également disponible en essai d'origine. Inscrivez-vous aux deux phases d'évaluation pour utiliser ces API ensemble.

Détection de fonctionnalités

Pour déterminer si l'API Translator est compatible, exécutez l'extrait de code de détection de fonctionnalités suivant.

if ('translation' in self && 'createTranslator' in self.translation) {
  // The Translator API is supported.
}

Vérifier la compatibilité de la combinaison linguistique

La traduction s'effectue à l'aide de modules linguistiques, téléchargés à la demande. Un pack de langue est comme un dictionnaire pour une langue donnée. Ces packs sont associés à la fonction canTranslate() asynchrone, qui vous permet de déterminer si une paire de langues est prise en charge.

La fonction canTranslate() nécessite un paramètre options avec deux champs:

  • sourceLanguage: langue actuelle du texte.
  • targetLanguage: langue finale dans laquelle le texte doit être traduit.

Utilisez les codes courts de langue BCP 47 comme chaînes. Par exemple, 'es' pour l'espagnol ou 'fr' pour le français.

await translation.canTranslate({
  sourceLanguage: 'en',
  targetLanguage: 'fr',
});
// 'readily'

La fonction canTranslate() peut renvoyer l'un des résultats suivants:

  • no: ce navigateur ne peut pas effectuer la traduction demandée.
  • readily: le navigateur peut traduire comme demandé.
  • after-download: le navigateur peut effectuer la traduction, mais seulement après avoir téléchargé le modèle ou les packs de langues appropriés.

Vous pouvez écouter la progression du téléchargement à l'aide de l'événement downloadprogress:

translator.ondownloadprogress = progressEvent => {
  updateDownloadProgressBar(progressEvent.loaded, progressEvent.total);
};

Si le téléchargement échoue, les événements downloadprogress cessent d'être émis et la promesse ready est rejetée.

Créer et exécuter le traducteur

Pour créer un traducteur, appelez la fonction translation.createTranslator() asynchrone. Comme canTranslate(), elle nécessite un paramètre d'options avec deux champs, un pour sourceLanguage et un pour targetLanguage.

// Create a translator that translates from English to French.
const translator = await self.translation.createTranslator({
  sourceLanguage: 'en',
  targetLanguage: 'fr',
});

Une fois que vous avez un traducteur, appelez la fonction translate() asynchrone pour traduire votre texte.

await translator.translate('Where is the next bus stop, please?');
// "Où est le prochain arrêt de bus, s'il vous plaît ?"

Limites de l'essai d'origine

Les limites suivantes s'appliquent pendant l'essai de l'origine.

Combinaisons linguistiques acceptées

Pour le moment, vous pouvez télécharger jusqu'à trois modules linguistiques pour traduction. Nous nous engageons à élargir la gamme de langues disponibles dans les prochaines versions, tout en maintenant des normes élevées en matière de confidentialité des utilisateurs. Vous pouvez vérifier si la paire de langues dont vous avez besoin est compatible avec la fonction canTranslate().

Il est possible que certaines combinaisons linguistiques moins fréquemment utilisées soient utilisées pour l'empreinte digitale. Par exemple, il est plus courant de traduire de l'anglais vers l'espagnol que vers des langues moins courantes, comme le gaélique et le catalan. Une paire de langues moins courante peut être considérée comme un point de données pour l'identification des utilisateurs.

Pendant le test de l'origine, nous limitons les paires de langues pouvant être traduites afin de protéger la confidentialité des utilisateurs. Les paires de langues doivent respecter les critères suivants:

  • La langue source et la langue de destination sont définies comme langues préférées dans Chrome.
  • Ou l'une des langues est définie comme langue préférée dans Chrome, et l'autre figure parmi les langues populaires suivantes :
    • Anglais (en)
    • Chinois mandarin (zh, simplifié) ou mandarin (Taïwan) (zh-Hant, traditionnel)
    • Japonais (ja)
    • Portugais (pt)
    • Russe (ru)
    • Espagnol (es)
    • Turc (tr)
    • Hindi (hi)
    • Vietnamien (vi)
    • Bengalî (bn)

Contournez les restrictions linguistiques pour les tests locaux

Pour le prototypage local, vous pouvez contourner ces vérifications en exécutant Chrome avec l'option de ligne de commande --disable-features=TranslationAPIAcceptLanguagesCheck. Vous pouvez également définir chrome://flags/#translation-api sur Activer sans limite de pack de langues.

Accédez à chrome://on-device-translation-internals/ pour installer et désinstaller manuellement des packs de langue.

Traductions séquentielles

Les traductions sont traitées de manière séquentielle. Si vous envoyez de grandes quantités de texte à traduire, les traductions ultérieures sont bloquées jusqu'à ce que les premières soient terminées.

Pour une réactivité optimale de vos requêtes de traduction, regroupez-les et envisagez d'afficher une interface de chargement, comme une icône de chargement, pour indiquer qu'une traduction est en cours.

Disponibilité des nœuds de calcul Web

Pendant la phase d'évaluation, l'API Translator n'est compatible qu'avec le thread principal. Nous prévoyons de la prendre en charge dans les nœuds de calcul Web une fois que l'API sera largement disponible.

Démo

Vous pouvez voir l'API Translator, utilisée avec l'API Language Detector, dans le Playground de l'API Translator and Language Detector.

Effort de standardisation

Nous travaillons à la standardisation de l'API Translator afin d'assurer la compatibilité entre les navigateurs.

Notre proposition d'API a reçu l'appui de la communauté et a été transférée au groupe de la communauté de l'incubateur Web du W3C pour une discussion plus approfondie. L'équipe Chrome a demandé des commentaires au Groupe d'architecture technique du W3C et à Mozilla et WebKit pour connaître leur position sur les normes.

Participer et partager des commentaires

Commencez à tester l'API Traducteur dès maintenant en participant à la phase d'évaluation et envoyez-nous vos commentaires. Vos commentaires peuvent avoir un impact direct sur la manière dont nous développons et implémentons les futures versions de cette API, ainsi que toutes les API d'IA intégrées.