Start · Sprachen · JavaScript · Referenz · Translator.inputQuota

Translator.inputQuota

Eigenschaft

Gibt als schreibgeschützte Zahl an, wie groß das Eingabekontingent ist, das der Browser einer <code>Translator</code>-Instanz für Übersetzungen zur Verfügung stellt.

seit JavaScript Chrome/Edge 138+ (experimentell, nicht Baseline) Kategorie: webapi

Signatur

get Translator.prototype.inputQuota

Beschreibung

Die Eigenschaft inputQuota einer Translator-Instanz liefert das Eingabekontingent, das der Browser für eine Übersetzung bereitstellt. Die Einheit legt der Browser fest (z. B. Token des zugrunde liegenden Sprachmodells) und ist nicht definiert. Verlassen Sie sich also nicht auf Zeichen oder Wörter, sondern vergleichen Sie immer mit dem Wert, den measureInputUsage() liefert.

Gebraucht wird die Eigenschaft vor allem vor dem Übersetzen längerer Texte. Mit await translator.measureInputUsage(text) ermitteln Sie, wie viel ein Text verbraucht, und vergleichen das mit translator.inputQuota. Ist der Text zu groß, teilen Sie ihn vorher in kleinere Abschnitte (z. B. Absätze oder Sätze) auf. So vermeiden Sie einen QuotaExceededError beim Aufruf von translate() oder translateStreaming().

Der Wert ist eine gewöhnliche Zahl und kann auch Infinity sein, wenn die Implementierung keine Grenze vorgibt. Die Eigenschaft ist schreibgeschützt und hängt an der Instanz: Jeder Übersetzer, den Sie mit Translator.create() erzeugen, hat einen eigenen Wert.

Rückgabewert

Typ
number
Beschreibung
Das verfügbare Eingabekontingent in einer Einheit, die der Browser festlegt. Kann Infinity sein, wenn es keine Grenze gibt.

Beispiele

Kontingent eines Übersetzers auslesen

if ('Translator' in self) {
  const translator = await Translator.create({
    sourceLanguage: 'en',
    targetLanguage: 'de'
  });
  console.log(`Eingabekontingent: ${translator.inputQuota}`);
} else {
  console.log('Translator API wird nicht unterstützt.');
}
Eingabekontingent: 1024 // Wert je nach Browser/Modell

Vor dem Übersetzen prüfen, ob der Text ins Kontingent passt

const translator = await Translator.create({
  sourceLanguage: 'en',
  targetLanguage: 'de'
});

const text = document.querySelector('#quelle').value;
const usage = await translator.measureInputUsage(text);

if (usage > translator.inputQuota) {
  console.warn(`Text zu lang: ${usage} von ${translator.inputQuota} erlaubt.`);
} else {
  const result = await translator.translate(text);
  document.querySelector('#ziel').textContent = result;
}

Lange Texte absatzweise übersetzen

const translateLongText = async (translator, text) => {
  const paragraphs = text.split(/\n{2,}/);
  const results = [];

  for (const para of paragraphs) {
    const usage = await translator.measureInputUsage(para);
    if (usage > translator.inputQuota) {
      // Notfalls satzweise weiter zerlegen
      const sentences = para.split(/(?<=[.!?])\s+/);
      const parts = [];
      for (const s of sentences) parts.push(await translator.translate(s));
      results.push(parts.join(' '));
    } else {
      results.push(await translator.translate(para));
    }
  }
  return results.join('\n\n');
};

const translator = await Translator.create({ sourceLanguage: 'en', targetLanguage: 'de' });
console.log(await translateLongText(translator, 'Hello world.\n\nHow are you?'));
Hallo Welt. Wie geht es dir?

QuotaExceededError abfangen

try {
  const translator = await Translator.create({ sourceLanguage: 'en', targetLanguage: 'de' });
  await translator.translate('Sehr langer Text ...'.repeat(10000));
} catch (err) {
  if (err.name === 'QuotaExceededError') {
    console.error('Eingabe überschreitet inputQuota – bitte kürzen.');
  } else {
    throw err;
  }
}
Eingabe überschreitet inputQuota – bitte kürzen.

// Wichtig · Fallstricke

  • Kompatibilität: Die Translator API ist experimentell. Sie steht in Chromium-Browsern ab Version 138 zur Verfügung, und zwar nur auf dem Desktop und in sicheren Kontexten (HTTPS). Firefox und Safari unterstützen sie derzeit nicht. Prüfen Sie die Unterstützung vorher mit 'Translator' in self.
  • Einheit ist nicht festgelegt: inputQuota gibt keine Anzahl von Zeichen an. Vergleichen Sie den Wert immer mit dem Ergebnis von measureInputUsage() und nie mit text.length.
  • Wert kann Infinity sein: Berechnungen wie das Aufteilen in Abschnitte nach Prozentanteilen sollten diesen Fall abfangen.
  • Gilt pro Aufruf: Das Kontingent bezieht sich auf die Eingabe eines einzelnen translate()-Aufrufs. Es ist kein Tages- oder Sitzungslimit.
  • Nach destroy() ist die Instanz nicht mehr nutzbar. Für weitere Übersetzungen müssen Sie mit Translator.create() einen neuen Übersetzer erzeugen.