Firefox Tomorrow

web api static method

LanguageDetector: availability() static method

View on MDN ↗

Limited availabilitySecure context

The availability() static method of the LanguageDetector interface returns an enumerated value that indicates whether the browser AI model supports a given LanguageDetector configuration.

Syntax

LanguageDetector.availability(options)

Parameters

  • options
    • : An object specifying configuration options for the LanguageDetector. Possible values include:
      • expectedInputLanguages
        • : An array of strings specifying the expected languages of the input text to have its language detected. These should be valid BCP 47 language tags. Defaults to ["en"]

Return value

A Promise that fulfills with an enumerated value indicating whether support is available (or will be available) for a given LanguageDetector configuration, or null if support could not be determined.

Possible values include:

  • available
    • : The browser supports the given configuration and it can be used immediately.
  • downloadable
    • : The browser supports the given configuration, but it first needs to download an AI model, or some fine-tuning data for the model.
  • downloading
    • : The browser supports the given configuration, but it has to finish an ongoing download before it can proceed.
  • unavailable

Exceptions

  • InvalidStateError DOMException
    • : Thrown if the page’s Document is not yet active.
  • OperationError DOMException
    • : Thrown if initialization of the AI model failed for any reason.
  • UnknownError DOMException
    • : Thrown if the availability() call failed for any other reason, or a reason the user agent did not wish to disclose.

Examples

Basic availability() usage

In the following snippet, we start by checking the availability of the model for detecting a couple of languages using the availability() method:

  • If it returns unavailable, we print an appropriate error message to the console.
  • If it returns available, we create a language detector using the create() method, passing it the expectedInputLanguages. The required AI model is available, so we can use it immediately.
  • If it returns a different value (that is, downloadable or downloading), we run the same create() method call, but this time we include a monitor that logs the percentage of the model downloaded each time the downloadprogress event fires.
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"]);

Detecting language support

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

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

Specifications

SpecificationsStandards references are available on the canonical MDN page.

Browser compatibility

Browser compatibilityCompatibility data is available on the canonical MDN page.

See also