LanguageDetector: availability() static method
Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.
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.
-
The browser does not support the given configuration.
Exceptions
InvalidStateErrorDOMException-
Thrown if the page's
Documentis not yet active. OperationErrorDOMException-
Thrown if initialization of the AI model failed for any reason.
UnknownErrorDOMException-
Thrown if the
availability()call failed for any other reason, or a reason the user agent did not wish to disclose.
If usage of the method is blocked by a language-detector Permissions-Policy, the promise rejects with a value of unavailable.
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 thecreate()method, passing it theexpectedInputLanguages. The required AI model is available, so we can use it immediately. - If it returns a different value (that is,
downloadableordownloading), we run the samecreate()method call, but this time we include amonitorthat logs the percentage of the model downloaded each time thedownloadprogressevent 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
| Specification |
|---|
| Translator and Language Detector APIs> # dom-languagedetector-availability> |
Browser compatibility
Loading…