Signatur
Beschreibung
Die Eigenschaft sourceLanguage einer Translator-Instanz gibt die Ausgangssprache zurück, also die Sprache, in der der Text an translate() bzw. translateStreaming() übergeben werden soll. Der Wert ist ein BCP-47-Sprachcode wie "en", "de" oder "pt-BR".
Festgelegt wird der Wert einmalig beim Erzeugen über Translator.create({ sourceLanguage, targetLanguage }). Danach lässt er sich nicht mehr ändern. Brauchst du ein anderes Sprachpaar, erzeugst du eine neue Instanz. Die Eigenschaft hilft dir vor allem, wenn du mehrere Übersetzer verwaltest (z. B. in einem Cache pro Sprachpaar), Instanzen in der Oberfläche beschriftest oder prüfst, ob ein vorhandener Übersetzer zu einem erkannten Eingabetext passt.
Wichtig: Der Übersetzer erkennt die Sprache nicht selbst. Er geht einfach davon aus, dass der Eingabetext in sourceLanguage geschrieben ist. Ist die tatsächliche Sprache unbekannt, ermittelst du sie vorher mit der LanguageDetector-API und erzeugst danach einen passenden Übersetzer.
Rückgabewert
Translator.create() als sourceLanguage angegeben wurde, z. B. "en".Beispiele
Übersetzer erzeugen und Sprachpaar auslesen
if ('Translator' in self) {
const translator = await Translator.create({
sourceLanguage: 'en',
targetLanguage: 'de'
});
console.log(`Übersetze von ${translator.sourceLanguage} nach ${translator.targetLanguage}`);
console.log(await translator.translate('Hello world!'));
} else {
console.log('Translator-API nicht verfügbar');
}
Cache für Übersetzer pro Sprachpaar
const translators = new Map();
const getTranslator = async (sourceLanguage, targetLanguage) => {
const key = `${sourceLanguage}->${targetLanguage}`;
if (!translators.has(key)) {
const availability = await Translator.availability({ sourceLanguage, targetLanguage });
if (availability === 'unavailable') {
throw new Error(`Sprachpaar ${key} wird nicht unterstützt`);
}
translators.set(key, await Translator.create({ sourceLanguage, targetLanguage }));
}
return translators.get(key);
};
const t = await getTranslator('fr', 'de');
console.log(t.sourceLanguage); // 'fr'
Erkannte Sprache mit vorhandenem Übersetzer abgleichen
const detector = await LanguageDetector.create();
let translator = await Translator.create({ sourceLanguage: 'en', targetLanguage: 'de' });
const translateText = async (text) => {
const [best] = await detector.detect(text);
if (best.detectedLanguage !== translator.sourceLanguage) {
translator.destroy();
translator = await Translator.create({
sourceLanguage: best.detectedLanguage,
targetLanguage: 'de'
});
}
return translator.translate(text);
};
console.log(translator.sourceLanguage);
await translateText('Bonjour tout le monde');
console.log(translator.sourceLanguage);
// Wichtig · Fallstricke
- Nur lesbar: Eine Zuweisung wie
translator.sourceLanguage = 'es'hat keine Wirkung (im Strict Mode gibt es einenTypeError). Für ein anderes Sprachpaar musst du eine neue Instanz erzeugen. - Keine automatische Erkennung: Wenn der Text nicht in
sourceLanguagevorliegt, wird er falsch oder gar nicht übersetzt. Ist die Sprache unklar, ermittle sie vorher mitLanguageDetector. - Kompatibilität: Die Translator-API ist experimentell. Sie läuft in Chrome und Edge ab Version 138 auf dem Desktop, Firefox und Safari unterstützen sie bisher nicht. Prüfe deshalb immer mit
'Translator' in self, ob sie vorhanden ist. Die API setzt einen sicheren Kontext (HTTPS) voraus und kann per Permissions Policy (translator) gesperrt sein. - Sprachpakete: Muss das Sprachmodell erst heruntergeladen werden (
availability()liefert dann'downloadable'), brauchtTranslator.create()eine Nutzerinteraktion, etwa einen Klick. - Der Browser kann den übergebenen Sprachcode normalisieren. Vergleiche Codes deshalb am besten ohne Beachtung der Groß-/Kleinschreibung oder über
Intl.getCanonicalLocales().