このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

Translator: availability() 静的メソッド

利用可能性は限定的

この機能はベースラインではありません。最も広く使用されているブラウザーの一部で動作しません。

Want more browser support for this feature? Tell us why.

Experimental: これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。

安全なコンテキスト用: この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。

availability()Translator インターフェイスの静的メソッドで、指定された Translator 設定における AI モデルの利用可否を示す列挙値を返します。

構文

js
Translator.availability(options)

引数

options

Translator の構成オプションを指定するオブジェクト。取り得る値は以下の通りです。

sourceLanguage

入力テキストの翻訳元言語を指定する文字列。これは、有効な BCP 47 言語タグである必要があります。

targetLanguage

入力テキストの翻訳先言語を指定する文字列。これは、有効な BCP 47 言語タグである必要があります。

返値

指定された Translator 設定に対する対応状況(利用可能か、または今後利用可能になるか)を示す列挙値で履行される Promise です。対応状況が判別できなかった場合は null となります。

取り得る値には、次のようなものがあります。

available

このブラウザーは指定された設定に対応しており、すぐに使用できます。

downloadable

このブラウザーは指定された設定に対応していますが、先に AI モデル、あるいはそのモデルの調整用データをダウンロードする必要があります。

downloading

このブラウザーは指定された設定に対応していますが、処理を進めるには、現在進行中のダウンロードが完了するのを待つ必要があります。

unavailable

ブラウザーは指定された設定に対応していません。また、指定された sourceLanguagetargetLanguage が同じ場合、または translatorPermissions-Policy によって翻訳 API がブロックされている場合にも、この値が返されます。

例外

InvalidStateError DOMException

このページの Document がまだアクティブでない場合に発生します。

OperationError DOMException

何らかの理由で AI モデルの初期化に失敗した場合に発生します。

UnknownError DOMException

availability() の呼び出しが、その他の何らかの理由、あるいはユーザーエージェントが開示を望まなかったために失敗した場合に発生します。

基本的な availability() の使い方

以下のコードスニペットでは、まず availability() メソッドを使用して、2 つの言語を対応させる際にモデルが利用できるかどうかを調べます。

  • unavailable が返された場合は、コンソールに適切なエラーメッセージを表示します。
  • available が返された場合は、create() メソッドを使用して、翻訳元言語と翻訳先言語を引数として渡して翻訳器を生成します。必要な AI モデルが利用可能であるため、すぐに使用することができます。
  • それ以外の値(つまり downloadable または downloading)が返された場合は、同じ create() メソッドを実行しますが、この場合は downloadprogress イベントが発生するたびに、モデルのダウンロード率をログに出力する monitor を含みます。
js
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",
});

言語対応の検出

js
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

ブラウザーの互換性

関連情報