使用内置 AI 进行翻译

发布时间:2024 年 11 月 13 日

在 Chrome 中使用 Translator API,通过本地 AI 模型在浏览器中翻译文本。

您的网站可能已经以多种语言提供网站内容,以便全球观众访问。借助 Translator API,用户可以用自己的母语贡献译文。例如,用户可以使用其第一语言参与支持聊天,您的网站可以在信息离开用户设备之前将其翻译成支持人员使用的语言。这样可以为所有用户提供流畅、快速且包容的体验。

通常,若要翻译网页内容,需要使用云服务。首先,源内容会上传到服务器,服务器会将其翻译成目标语言,然后下载生成的文本并将其返回给用户。通过在客户端上运行翻译,您可以节省服务器往返所需的时间,并降低托管翻译服务的费用。

可用性

虽然所选的目标语言始终是已知的,但在某些情况下,源语言可能未知,例如用户生成的内容。在这种情况下,Translator API 方案同时包含 Translator API 和 Language Detector API,后者也可在源代码审核中使用。请同时报名参加这两项源试用,以便结合使用这些 API。

注册源代码试用

如需开始使用 Translator API,请按以下步骤操作:

  1. 确认您已阅读并同意《Google 生成式 AI 使用限制政策》
  2. 前往 Translator API 源代码试用版
  3. 点击注册,然后填写表单。
    • 网站来源字段中,提供您的来源或扩展程序 ID chrome-extension://YOUR_EXTENSION_ID
  4. 如需提交,请点击注册
  5. 复制提供的令牌,并将其添加到您要启用试用版的来源或扩展程序文件中的每个网页。
  6. 开始使用 Translator API

详细了解如何开始使用来源试用

添加了对 localhost 的支持

如需在源代码试用期间在 localhost 上访问 Translator API,您必须将 Chrome 更新到最新版本。然后,请按下列步骤操作:

  1. 前往chrome://flags/#optimization-guide-on-device-model
  2. 选择 Enabled BypassPerfRequirement。这会跳过性能检查和 VRAM 要求,这可能会导致 Gemini Nano 无法在您的设备上下载。
  3. 前往chrome://flags/#translation-api
  4. 选择已启用
    • 如需尝试更多语言对,请选择已启用,无语言包数量限制
  5. 点击重新启动或重启 Chrome。

使用 Translator API

如需确定是否支持 Translator API,请运行以下功能检测代码段。

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

检查语言对支持情况

翻译是通过按需下载的语言包进行管理的。语言包就像给定语言的字典。这些文件包与异步 canTranslate() 函数搭配使用,可让您确定是否支持某个语言对。

canTranslate() 函数需要一个包含两个字段的 options 参数:

  • sourceLanguage:文本的当前语言。
  • targetLanguage:文本应翻译成的最终语言。

使用 BCP 47 语言短代码作为字符串。例如,'es' 表示西班牙语,'fr' 表示法语。

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

canTranslate() 函数可以返回以下任一结果:

  • no:此浏览器无法按要求进行翻译。
  • readily:浏览器可以按请求进行翻译。
  • after-download:浏览器可以执行翻译,但只有在下载相关模型或语言包后才能执行。

您可以使用 downloadprogress 事件监听下载进度:

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

如果下载失败,系统会停止发出 downloadprogress 事件,并拒绝 ready promise。

创建并运行转换器

如需创建转换器,请调用异步 translation.createTranslator() 函数。与 canTranslate() 一样,它需要一个包含两个字段的选项参数,一个用于 sourceLanguage,另一个用于 targetLanguage

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

获得翻译器后,调用异步 translate() 函数即可翻译文本。

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

源代码试用版中的限制

在源代码试用期间,存在以下限制。

支持的语言对

目前,您最多可以下载 3 个语言包以进行翻译。我们致力于在未来的版本中扩大支持的语言范围,同时保持严格的用户隐私保护标准。您可以使用 canTranslate() 函数确认所需的语言对是否受支持。

某些不太常用的语言对可能会用于指纹识别。例如,英语和西班牙语之间的翻译比不太常用的语言(例如盖尔语和加泰罗尼亚语)之间的翻译更常见。不常见的语言对可以视为用户识别的数据点。

在源代码试用期间,我们会限制可翻译的语言对,以保护用户隐私。语言对必须符合以下条件:

  • 在 Chrome 中,源语言和目标语言都设置为首选语言
  • 或者,其中一种语言在 Chrome 中设为首选语言,另一种语言属于以下热门语言
    • 英语 (en)
    • 普通话(zh;简体)或台湾普通话(zh-Hant;繁体)
    • 日语 (ja)
    • 葡萄牙语 (pt)
    • 俄语 (ru)
    • 西班牙语 (es)
    • 土耳其语 (tr)
    • 印地语 (hi)
    • 越南语 (vi)
    • 孟加拉语 (bn)

绕过本地测试的语言限制

对于本地原型设计,您可以使用命令行选项 --disable-features=TranslationAPIAcceptLanguagesCheck 运行 Chrome,以绕过这些检查。或者,将 chrome://flags/#translation-api 设为 Enable without language pack limit(启用,不限制语言包数量)。

访问 chrome://on-device-translation-internals/ 以手动安装和卸载语言包。

顺序翻译

系统会按顺序处理翻译。如果您发送大量文本以供翻译,系统会阻止后续翻译,直到先前翻译完成为止。

为了尽可能提高翻译请求的响应速度,请将翻译请求分块处理,并考虑显示加载界面(例如旋转图标),以表明翻译正在进行。

网络工作器可用性

在源代码试用期间,Translator API 仅从主线程支持。我们打算在该 API 广泛提供后在 Web Worker 中支持它。

演示

您可以在 Translator and Language Detector API Playground 中查看与 Language Detector API 搭配使用的 Translator API。

标准化工作

我们正在努力规范 Translator API,以确保跨浏览器兼容性。

我们的 API 提案获得了社区支持,现已移至 W3C Web Incubator 社区群组进行进一步讨论。Chrome 团队向 W3C 技术架构组征求了反馈,并询问了 MozillaWebKit 的标准立场。

参与并分享反馈

立即加入源试用,开始测试 Translator API,并分享您的反馈。您的反馈将直接影响我们构建和实现此 API 及所有内置 AI API 的未来版本的方式。