Traducción con IA integrada

Fecha de publicación: 12 de noviembre de 2024

Usa la API de Translator en Chrome para traducir texto en el navegador con modelos de IA locales.

Es posible que tu sitio web ya ofrezca contenido en varios idiomas para que sea accesible a un público global. Con la API de Translator, los usuarios pueden contribuir en su idioma materno. Por ejemplo, los usuarios pueden participar en chats de asistencia en su idioma materno, y tu sitio puede traducirlo al idioma que usan tus agentes de asistencia antes de que salga del dispositivo del usuario. Esto crea una experiencia fluida, rápida e inclusiva para todos los usuarios.

La traducción de contenido en la Web suele requerir el uso de un servicio en la nube. Primero, el contenido de origen se sube a un servidor, que ejecuta la traducción a un idioma de destino. Luego, el texto resultante se descarga y se muestra al usuario. Si ejecutas la traducción en el cliente, ahorras el tiempo que requieren los viajes del servidor y el costo de alojar el servicio de traducción.

Disponibilidad

Si bien siempre se conoce el idioma objetivo seleccionado, en algunas situaciones, el idioma de origen puede ser desconocido, por ejemplo, con el contenido generado por usuarios. En estos casos, la propuesta de la API de Translator incluye la API de Translator y la API de Language Detector, que también está disponible en una prueba de origen. Regístrate en ambas pruebas de origen para usar estas APIs en conjunto.

Detección de atributos

Para determinar si la API de Translator es compatible, ejecuta el siguiente fragmento de detección de funciones.

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

Cómo verificar la compatibilidad con pares de idiomas

La traducción se administra con paquetes de idioma que se descargan a pedido. Un paquete de idioma es como un diccionario para un idioma determinado. Estos paquetes se vinculan con la función canTranslate() asíncrona, que te permite determinar si se admite un par de idiomas.

La función canTranslate() requiere un parámetro options con dos campos:

  • sourceLanguage: Es el idioma actual del texto.
  • targetLanguage: Es el idioma final al que se debe traducir el texto.

Usa códigos cortos de idioma BCP 47 como cadenas. Por ejemplo, 'es' para español o 'fr' para francés.

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

La función canTranslate() puede mostrar cualquiera de los siguientes resultados:

  • no: Este navegador no puede realizar la traducción solicitada.
  • readily: El navegador puede traducir según lo solicitado.
  • after-download: El navegador puede realizar la traducción, pero solo después de descargar los paquetes de idioma o modelo relevantes.

Puedes escuchar el progreso de la descarga con el evento downloadprogress:

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

Si la descarga falla, se detendrán los eventos downloadprogress y se rechazará la promesa ready.

Crea y ejecuta el traductor

Para crear un traductor, llama a la función translation.createTranslator() asíncrona. Al igual que canTranslate(), requiere un parámetro de opciones con dos campos, uno para sourceLanguage y otro para targetLanguage.

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

Una vez que tengas un traductor, llama a la función translate() asíncrona para traducir tu texto.

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

Limitaciones de la prueba de origen

Las siguientes limitaciones se aplican durante la prueba de origen.

Pares de idiomas compatibles

En este momento, se pueden descargar hasta tres paquetes de idioma para traducirlos. Tenemos el compromiso de expandir la variedad de idiomas compatibles en versiones futuras y, al mismo tiempo, mantener estándares altos para la privacidad del usuario. Puedes confirmar si el par de idiomas que necesitas es compatible con la función canTranslate().

Es posible que ciertos pares de idiomas que se usan con menos frecuencia se usen para la creación de huellas digitales. Por ejemplo, es más común traducir entre inglés y español que entre idiomas menos comunes, como el gaélico y el catalán. Un par de idiomas menos común podría considerarse un punto de datos para la identificación del usuario.

Durante la prueba de origen, limitamos los posibles pares de idiomas traducibles para proteger la privacidad del usuario. Los pares de idiomas deben cumplir con los siguientes criterios:

  • Tanto el idioma de origen como el de destino se configuran como idiomas preferidos en Chrome.
  • O bien, uno de los idiomas se configuró como preferido en Chrome y el otro se encuentra entre los siguientes idiomas populares:
    • Inglés (en)
    • Chino mandarín (zh; simplificado) o mandarín de Taiwán (zh-Hant; tradicional)
    • Japonés (ja)
    • Portugués (pt)
    • Ruso (ru)
    • Español (es)
    • Turco (tr)
    • Hindi (hi)
    • Vietnamita (vi)
    • Bengalí (bn)

Cómo omitir las restricciones de idioma para las pruebas locales

Para el prototipado local, puedes omitir estas verificaciones ejecutando Chrome con la opción de línea de comandos --disable-features=TranslationAPIAcceptLanguagesCheck. Como alternativa, establece chrome://flags/#translation-api en Habilitar sin límite de paquetes de idioma.

Ve a chrome://on-device-translation-internals/ para instalar y desinstalar paquetes de idioma de forma manual.

Traducciones secuenciales

Las traducciones se procesan de forma secuencial. Si envías grandes cantidades de texto para que se traduzca, las traducciones posteriores se bloquearán hasta que se completen las anteriores.

Para obtener la mejor capacidad de respuesta de tus solicitudes de traducción, agrúpalas y considera mostrar una interfaz de carga, como un ícono giratorio, para indicar que se está realizando una traducción.

Disponibilidad de los trabajadores web

Durante la prueba de origen, la API de Translator solo se admite desde el subproceso principal. Tenemos la intención de admitirlo en los trabajadores web una vez que la API esté disponible de forma general.

Demostración

Puedes ver la API de Translator, que se usa junto con la API de Language Detector, en la zona de pruebas de la API de Translator and Language Detector.

Esfuerzo de estandarización

Estamos trabajando para estandarizar la API de Translator y garantizar la compatibilidad entre navegadores.

Nuestra propuesta de API recibió asistencia de la comunidad y se trasladó al W3C Web Incubator Community Group para analizarlo en más detalle. El equipo de Chrome solicitó comentarios al grupo de arquitectura técnica del W3C y a Mozilla y WebKit para conocer sus posiciones sobre los estándares.

Participa y comparte comentarios

Únete a la prueba de origen para comenzar a probar la API de Translator ahora y comparte tus comentarios. Tus comentarios pueden afectar directamente la forma en que compilamos e implementamos las versiones futuras de esta API y todas las APIs de IA integradas.