Signatur
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
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.');
}
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?'));
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;
}
}
// 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:
inputQuotagibt keine Anzahl von Zeichen an. Vergleichen Sie den Wert immer mit dem Ergebnis vonmeasureInputUsage()und nie mittext.length. - Wert kann
Infinitysein: 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 mitTranslator.create()einen neuen Übersetzer erzeugen.