发布时间:2024 年 11 月 13 日
在 Chrome 中使用 Translator API,通过本地 AI 模型在浏览器中翻译文本。
您的网站可能已经以多种语言提供网站内容,以便全球观众访问。借助 Translator API,用户可以用自己的母语贡献译文。例如,用户可以使用其第一语言参与支持聊天,您的网站可以在信息离开用户设备之前将其翻译成支持人员使用的语言。这样可以为所有用户提供流畅、快速且包容的体验。
通常,若要翻译网页内容,需要使用云服务。首先,源内容会上传到服务器,服务器会将其翻译成目标语言,然后下载生成的文本并将其返回给用户。通过在客户端上运行翻译,您可以节省服务器往返所需的时间,并降低托管翻译服务的费用。
可用性
- 加入 Translator API 源试用,该试用在 Chrome 131 到 137 中运行。在来源处进行试用后,您可以为 Chrome 上来源的所有用户启用该功能。
- 请按照 ChromeStatus 中的实现进行操作。
- Translator API 提案现已开放讨论。
- 加入抢先体验计划,抢先了解新的内置 AI API,并参与我们的邮寄名单讨论。
虽然所选的目标语言始终是已知的,但在某些情况下,源语言可能未知,例如用户生成的内容。在这种情况下,Translator API 方案同时包含 Translator API 和 Language Detector API,后者也可在源代码审核中使用。请同时报名参加这两项源试用,以便结合使用这些 API。
注册源代码试用
如需开始使用 Translator API,请按以下步骤操作:
- 确认您已阅读并同意《Google 生成式 AI 使用限制政策》。
- 前往 Translator API 源代码试用版。
- 点击注册,然后填写表单。
- 在网站来源字段中,提供您的来源或扩展程序 ID
chrome-extension://YOUR_EXTENSION_ID
。
- 在网站来源字段中,提供您的来源或扩展程序 ID
- 如需提交,请点击注册。
- 复制提供的令牌,并将其添加到您要启用试用版的来源或扩展程序文件中的每个网页。
- 如果您要构建扩展程序,请按照扩展程序来源试用说明操作
- 开始使用 Translator API。
详细了解如何开始使用来源试用。
添加了对 localhost 的支持
如需在源代码试用期间在 localhost
上访问 Translator API,您必须将 Chrome 更新到最新版本。然后,请按下列步骤操作:
- 前往
chrome://flags/#optimization-guide-on-device-model
。 - 选择 Enabled BypassPerfRequirement。这会跳过性能检查和 VRAM 要求,这可能会导致 Gemini Nano 无法在您的设备上下载。
- 前往
chrome://flags/#translation-api
。 - 选择已启用。
- 如需尝试更多语言对,请选择已启用,无语言包数量限制。
- 点击重新启动或重启 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 技术架构组征求了反馈,并询问了 Mozilla 和 WebKit 的标准立场。
参与并分享反馈
立即加入源试用,开始测试 Translator API,并分享您的反馈。您的反馈将直接影响我们构建和实现此 API 及所有内置 AI API 的未来版本的方式。
- 如需针对 Chrome 的实现方式提供反馈,请提交bug 报告或功能请求。
- 在 GitHub 上讨论 Translator API 设计,方法是针对现有问题发表评论或创建新问题。
- 加入 Web Incubator 社区群组,参与制定标准。