Translator: availability() 静的メソッド
利用可能性は限定的
この機能はベースラインではありません。最も広く使用されているブラウザーの一部で動作しません。
Want more browser support for this feature? Tell us why.
Experimental: これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。
安全なコンテキスト用: この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。
availability() は Translator インターフェイスの静的メソッドで、指定された Translator 設定における AI モデルの利用可否を示す列挙値を返します。
構文
Translator.availability(options)
引数
options-
Translatorの構成オプションを指定するオブジェクト。取り得る値は以下の通りです。sourceLanguage-
入力テキストの翻訳元言語を指定する文字列。これは、有効な BCP 47 言語タグである必要があります。
targetLanguage-
入力テキストの翻訳先言語を指定する文字列。これは、有効な BCP 47 言語タグである必要があります。
返値
指定された Translator 設定に対する対応状況(利用可能か、または今後利用可能になるか)を示す列挙値で履行される Promise です。対応状況が判別できなかった場合は null となります。
取り得る値には、次のようなものがあります。
available-
このブラウザーは指定された設定に対応しており、すぐに使用できます。
downloadable-
このブラウザーは指定された設定に対応していますが、先に AI モデル、あるいはそのモデルの調整用データをダウンロードする必要があります。
downloading-
このブラウザーは指定された設定に対応していますが、処理を進めるには、現在進行中のダウンロードが完了するのを待つ必要があります。
-
ブラウザーは指定された設定に対応していません。また、指定された
sourceLanguageとtargetLanguageが同じ場合、またはtranslatorのPermissions-Policyによって翻訳 API がブロックされている場合にも、この値が返されます。
例外
InvalidStateErrorDOMException-
このページの
Documentがまだアクティブでない場合に発生します。 OperationErrorDOMException-
何らかの理由で AI モデルの初期化に失敗した場合に発生します。
UnknownErrorDOMException-
availability()の呼び出しが、その他の何らかの理由、あるいはユーザーエージェントが開示を望まなかったために失敗した場合に発生します。
例
>基本的な availability() の使い方
以下のコードスニペットでは、まず availability() メソッドを使用して、2 つの言語を対応させる際にモデルが利用できるかどうかを調べます。
unavailableが返された場合は、コンソールに適切なエラーメッセージを表示します。availableが返された場合は、create()メソッドを使用して、翻訳元言語と翻訳先言語を引数として渡して翻訳器を生成します。必要な AI モデルが利用可能であるため、すぐに使用することができます。- それ以外の値(つまり
downloadableまたはdownloading)が返された場合は、同じcreate()メソッドを実行しますが、この場合はdownloadprogressイベントが発生するたびに、モデルのダウンロード率をログに出力するmonitorを含みます。
async function getTranslator(languages) {
const availability = await Translator.availability(languages);
if (availability === "unavailable") {
console.log(
`この翻訳は対応していません。別の言語の組み合わせをお試しください。`,
);
return undefined;
} else if (availability === "available") {
return await Translator.create(languages);
}
return await Translator.create({
...languages,
monitor(monitor) {
monitor.addEventListener("downloadprogress", (e) => {
console.log(`Downloaded ${Math.floor(e.loaded * 100)}%`);
});
},
});
}
const translator = await getTranslator({
sourceLanguage: "en",
targetLanguage: "ja",
});
言語対応の検出
async function langSupport(source, target) {
const availability = await Translator.availability({
sourceLanguage: source,
targetLanguage: target,
});
return availability;
}
await langSupport("en", "fr");
await langSupport("en", "pt");
await langSupport("en", "zh");
仕様書
| 仕様書 |
|---|
| Translator and Language Detector APIs> # dom-translator-availability> |