LanguageDetector: availability() 静态方法

实验性: 这是一项实验性技术
在生产中使用此技术之前,请仔细检查浏览器兼容性表格

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

LanguageDetector 接口的 availability() 静态方法返回一个枚举值,该值指示浏览器 AI 模型是否支持给定的 LanguageDetector 配置。

语法

js
LanguageDetector.availability(options)

参数

options

一个指定 LanguageDetector 配置选项的对象。可能的值包括

expectedInputLanguages

一个字符串数组,指定要检测其语言的输入文本的预期语言。这些应该是有效的 BCP 47 语言标记。默认为 ["en"]

返回值

一个 Promise,该 Promise 会fulfilled(解析)为一个枚举值,指示对给定的 LanguageDetector 配置是否可用(或将可用)支持,如果无法确定支持,则为 null

可能的值包括:

available

浏览器支持给定的配置,并且可以立即使用。

downloadable

浏览器支持给定的配置,但需要先下载 AI 模型或模型的某些微调数据。

downloading

浏览器支持给定的配置,但必须先完成正在进行的下载才能继续。

unavailable

浏览器不支持给定的配置。

异常

InvalidStateError DOMException

如果页面的 Document 尚未激活,则抛出此异常。

OperationError DOMException

如果 AI 模型初始化因任何原因失败,则抛出此错误。

UnknownError DOMException

如果 availability() 调用因任何其他原因或用户代理不愿披露的原因而失败,则抛出此错误。

如果方法的用法被 language-detector Permissions-Policy 阻止,则 Promise 会以 unavailable 的值被拒绝。

示例

基本的 availability() 用法

在以下代码片段中,我们首先使用 availability() 方法检查模型检测几种语言的可用性

  • 如果返回 unavailable,我们会向控制台打印一条适当的错误消息。
  • 如果返回 available,我们使用 create() 方法创建一个语言检测器,并将 expectedInputLanguages 传递给它。所需的 AI 模型可用,因此我们可以立即使用它。
  • 如果返回不同的值(即 downloadabledownloading),我们运行相同的 create() 方法调用,但这次我们包含一个 monitor,它会在每次触发 downloadprogress 事件时记录模型下载的百分比。
js
async function getDetector(languages) {
  const availability = await LanguageDetector.availability({
    expectedInputLanguages: languages,
  });
  if (availability === "unavailable") {
    console.log(`Detection not supported; try a different set of languages.`);
    return undefined;
  } else if (availability === "available") {
    return await LanguageDetector.create({
      expectedInputLanguages: languages,
    });
  }
  return await LanguageDetector.create({
    expectedInputLanguages: languages,
    monitor(monitor) {
      monitor.addEventListener("downloadprogress", (e) => {
        console.log(`Downloaded ${Math.floor(e.loaded * 100)}%`);
      });
    },
  });
}

const detector = await getDetector(["en-US", "zh"]);

检测语言支持

js
async function langSupport(language) {
  const availability = await LanguageDetector.availability({
    expectedInputLanguages: [language],
  });
  return availability;
}

await langSupport("en");
await langSupport("pt");
await langSupport("zh");

规范

规范
翻译器和语言检测器 API
# dom-languagedetector-availability

浏览器兼容性

另见